From 64254314967cc17e92df043ffa31082a87746f5c Mon Sep 17 00:00:00 2001 From: pkali Date: Mon, 3 Oct 2022 22:54:20 -0400 Subject: [PATCH] WIP: more keyboard shenanigans --- constants.asm | 18 ++++++- lib/5200MACRO.ASM | 2 +- lib/5200SYS.ASM | 20 ++++++++ lib/ATARISYS.ASM | 68 ++++++++++++++++++++++++++ lib/MACRO.ASM | 2 +- scorch.asm | 119 ++++++++++++++++++++++++++++++++++++---------- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 48635 -> 48558 bytes textproc.asm | 48 +++++++++---------- weapons.asm | 40 ++++++++-------- 10 files changed, 243 insertions(+), 74 deletions(-) diff --git a/constants.asm b/constants.asm index a62334e..45f1464 100644 --- a/constants.asm +++ b/constants.asm @@ -525,8 +525,22 @@ weaponsOfDeath ; weapons used in tank death animations dta 1,2,3,7,17,18,19,20,21,22,23,24,25,26,27 weaponsOfDeathEnd joyToKeyTable - ; .by 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15 - .by $ff,$ff,$ff,$ff,$ff,$ff,$ff,$07,$ff,$ff,$ff,$06,$ff,$0f,$0e,$ff + .by $ff ;00 + .by $ff ;01 + .by $ff ;02 + .by $ff ;03 + .by $ff ;04 + .by $ff ;05 + .by $ff ;06 + .by @kbcode._right ;07 + .by $ff ;08 + .by $ff ;09 + .by $ff ;0a + .by @kbcode._left ;0b + .by $ff ;0c + .by @kbcode._down ;0d + .by @kbcode._up ;0e + .by $ff ;0f ;----------------------------------- keycodes ;tables for converting KeyCode to Screen Code (38 -1 characters) diff --git a/lib/5200MACRO.ASM b/lib/5200MACRO.ASM index 0aafe81..d613dc5 100644 --- a/lib/5200MACRO.ASM +++ b/lib/5200MACRO.ASM @@ -102,7 +102,7 @@ sta :1+1 .endm ;------------------------------------- - .macro randomize + .macro randomizer ;usage: randomize floor ceiling ;returns (in A) a random .byte between "floor" and "ceiling" .if :2 < :1 diff --git a/lib/5200SYS.ASM b/lib/5200SYS.ASM index bf46da5..cebd9e0 100644 --- a/lib/5200SYS.ASM +++ b/lib/5200SYS.ASM @@ -249,3 +249,23 @@ scr32 = @dmactl(narrow|dma|players|missiles|lineX1) mode10 = %10000000 mode11 = %11000000 .ende +/* +; commented out to be replaced by the application specific A800 --> 5200 keypad translation +.enum @kbcode + _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _asterisk = $0a + _hash = $0b + _start = $0c + _pause = $0d + _reset = $0e +.ende +*/ \ No newline at end of file diff --git a/lib/ATARISYS.ASM b/lib/ATARISYS.ASM index 83cc301..7c031de 100644 --- a/lib/ATARISYS.ASM +++ b/lib/ATARISYS.ASM @@ -652,3 +652,71 @@ scr32 = @dmactl(narrow|dma|players|missiles|lineX1) mode10 = %10000000 mode11 = %11000000 .ende +; --------------------------------------------------------------------------- +; KBCODEs +; --------------------------------------------------------------------------- +.enum @kbcode + _none = 255 + _esc = 28 + _1 = 31 + _2 = 30 + _3 = 26 + _4 = 24 + _5 = 29 + _6 = 27 + _7 = 51 + _8 = 53 + _9 = 48 + _0 = 50 + _lt = 54 + _gt = 55 + _del = 52 + _tab = 44 + _Q = 47 + _W = 46 + _E = 42 + _R = 40 + _T = 45 + _Y = 43 + _U = 11 + _I = 13 + _O = 8 + _P = 10 + _min = 14 + _up = 14 ; cursor function + _eq = 15 + _down = 15 ; cursor function + _ret = 12 + _A = 63 + _S = 62 + _D = 58 + _F = 56 + _G = 61 + _H = 57 + _J = 1 + _K = 5 + _L = 0 + _semicolon = 2 + _plus = 6 + _left = 6 ; cursor function + _asterisk = 7 + _right = 7 ; cursor function + _caps = 60 + _Z = 23 + _X = 22 + _C = 18 + _V = 16 + _B = 21 + _N = 36 + _M = 37 + _comma = 32 + _dot = 34 + _slash = 38 + _atari = 39 + _help = 17 + _F1 = 3 + _F2 = 4 + _F3 = 19 + _F4 = 20 + _space = 33 +.ende \ No newline at end of file diff --git a/lib/MACRO.ASM b/lib/MACRO.ASM index 2567870..14e7780 100644 --- a/lib/MACRO.ASM +++ b/lib/MACRO.ASM @@ -101,7 +101,7 @@ sta :1+1 .endm ;------------------------------------- - .macro randomize + .macro randomizer ;usage: randomize floor ceiling ;returns (in A) a random .byte between "floor" and "ceiling" .if :2 < :1 diff --git a/scorch.asm b/scorch.asm index 313f14f..abdae63 100644 --- a/scorch.asm +++ b/scorch.asm @@ -7,6 +7,8 @@ ;--------------------------------------------------- .def TARGET = 800 ;5200 ; or 800 +;atari800 -5200 -cart ${outputFilePath} -cart-type 4 +;atari800 -run ${outputFilePath} ;--------------------------------------------------- OPT r+ ; saves 12 bytes :O @@ -133,6 +135,41 @@ OPT h-f+ icl 'lib/5200SYS.ASM' icl 'lib/5200MACRO.ASM' + .enum @kbcode + /* + _0 + _1 + _2 + _3 + _4 + _5 + _6 + _7 + _8 + _9 + _asterisk = $0a + _hash = $0b + _start = $0c + _pause = $0d + _reset = $0e + */ + _space = $00 + _Y = $01 + _up = $02 + _O = $03 + _left = $04 + _tab = $05 + _right = $06 + _A = $07 + _down = $08 + _I = $09 + _esc = $0a + _ret = $0b + _M = $0d + _S = $0e + _del = $0e ; not used in 5200 + + .ende .ELSE icl 'lib/ATARISYS.ASM' icl 'lib/MACRO.ASM' @@ -577,7 +614,7 @@ RoboTanks jsr DisplayStatus ; to make visible AI selected defensive (and offensive :) ) jsr MoveBarrelToNewPosition lda kbcode - cmp #28 ; ESC + cmp #@kbcode._esc ; 28 ; ESC bne @+ jsr AreYouSure @ lda escFlag @@ -1556,7 +1593,7 @@ SetRandomWalls lda kbcode and #$3f ;CTRL and SHIFT ellimination - cmp #28 ; ESC + cmp #@kbcode._esc ; 28 ; ESC bne getkeyend mvx #$80 escFlag bne getkeyend @@ -1577,7 +1614,7 @@ notpressedJoyGetKey ;fire lda STRIG0 bne @- - lda #$0c ;Return key + lda #@kbcode._ret ;Return key getkeyend mvx #sfx_keyclick sfx_effect @@ -1638,13 +1675,12 @@ checkForHuman ; if all in skillTable other than 0 then switch to DEMO MODE ;pause 150 ldy #75 jsr PauseYFrames - jmp noKey + rts peopleAreHere - jsr getkey -noKey - rts + jmp getkey ; jsr:rts .endp + MakeDarkScreen mva #0 dmactls ; dark screen sta dmactl @@ -1652,13 +1688,12 @@ MakeDarkScreen .proc WaitOneFrame lda CONSOL and #%00000101 ; Start + Option - bne @+ - mva #$40 escFlag -@ and #%00000001 ; START KEY - beq @+ - wait -@ rts + sne:mva #$40 escFlag + and #%00000001 ; START KEY + seq:wait + rts .endp + .proc PauseYFrames ; Y - number of frames to wait (divided by 2) ; pauses for maximally 510 frames (255 * 2) @@ -1708,19 +1743,51 @@ noingame bne @- rts .endp -;;-------------------------------------------------- -;.proc Randomizer -;;-------------------------------------------------- -; ;usage: randomize floor ceiling -; ;returns (in A) a random .byte between "floor" and "ceiling" -;?rand -; lda random -; cmp #:1 ;floor -; bcc ?rand -; cmp #:2+1 ;ceiling -; bcs ?rand -; rts -;.endp +;-------------------------------------------------- +.macro randomize floor ceiling +;-------------------------------------------------- + ;usage: randomize floor ceiling + ;returns (in A) a random .byte between "floor" and "ceiling" + jsr _randomizator + .byte :floor + .byte :ceiling +.endm + +.proc _randomizator +; private function that accompanies `randomize` macro +; trashes: magic, temp, Y + pla + sta magic + pla + sta magic+1 + ldy #1 ; add 1 to the value got from the stack to point to the input parameters + lda (magic),y + sta temp + iny + lda (magic),y + sta temp+1 + +?rand + lda random + cmp temp ;floor + bcc ?rand + cmp temp+1 ;ceiling + bcs ?rand + tay ; save the result + + ; point the PC to a byte after the parameters + clc + lda magic + adc #2 ; length of the parameters in bytes + sta magic + lda magic+1 + adc #0 + pha + lda magic + pha + tya ; retrieve the result + rts +.endp ;---------------------------------------------- icl 'weapons.asm' ;---------------------------------------------- diff --git a/scorch.bin b/scorch.bin index 7c564ac41059b08f5987bd764e308c8e7643d88b..f1148f672e673ef7b37d2b1cde9138ac903356b5 100644 GIT binary patch delta 8284 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 diff --git a/scorch.xex b/scorch.xex index 5ba2f4cf841b0cf7b51ee64e6d3170970d59bb7f..1d22ef57b0adc18118ff4e9653dd6bb992a16b7c 100644 GIT binary patch delta 8032 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