From 95303380e7e07c586c7038350da366d2e8acd256 Mon Sep 17 00:00:00 2001 From: pkali Date: Mon, 26 Sep 2022 11:37:42 -0400 Subject: [PATCH] WIP: 5200 runs on a800 (fire to skip menu) --- artwork/sfx/rmtplayr_modified.asm | 18 ++--- artwork/talk.asm | 6 +- lib/5200MACRO.ASM | 3 +- lib/5200SYS.ASM | 11 ++- scorch.asm | 109 ++++++++++++++++-------------- scorch.bin | Bin 32768 -> 32768 bytes scorch.xex | Bin 48671 -> 48625 bytes 7 files changed, 77 insertions(+), 70 deletions(-) diff --git a/artwork/sfx/rmtplayr_modified.asm b/artwork/sfx/rmtplayr_modified.asm index b2c8f2e..003018d 100644 --- a/artwork/sfx/rmtplayr_modified.asm +++ b/artwork/sfx/rmtplayr_modified.asm @@ -624,20 +624,20 @@ SetPokey lda trackn_audf+0 ldx trackn_audc+0 - sta $d200 - stx $d201 + sta AUDF1 + stx AUDC1 lda trackn_audf+1 ldx trackn_audc+1 - sta $d200+2 - stx $d201+2 + sta AUDF2 + stx AUDC2 lda trackn_audf+2 ldx trackn_audc+2 - sta $d200+4 - stx $d201+4 + sta AUDF3 + stx AUDC3 lda trackn_audf+3 ldx trackn_audc+3 - sta $d200+6 - stx $d201+6 - sty $d208 + sta AUDF4 + stx AUDC4 + sty AUDCTL rts RMTPLAYEREND diff --git a/artwork/talk.asm b/artwork/talk.asm index f60451e..2a11cd8 100644 --- a/artwork/talk.asm +++ b/artwork/talk.asm @@ -1,6 +1,6 @@ .proc talk ; Maximum text length is 63 characters!!! -L0 dta d"CTO XYEB" +L0 dta d"CYKA BLAT" L1 dta d"DIE!" L2 dta d"EAT MY SHORTS!" L3 dta d"YOU'RE TOAST!" @@ -47,7 +47,7 @@ L43 dta d"THIS IS YOUR BRAIN ON SCORCH." L44 dta d"TAKE THIS!" L45 dta d"THIS SCREEN AIN'T BIG ENOUGH FOR THE BOTH OF US." L46 dta d"DIE, ALIEN SWINE!" -L47 dta d"SAY ARRGGHHHHH...." +L47 dta d"AWRUK!!!" L48 dta d"I SHALL OIL MY TURRET WITH YOUR BLOOD." L49 dta d"DIE, TANK-SCUM!" L50 dta d"I'M GONNA BREAK YOUR FACE!" @@ -104,7 +104,7 @@ L99 dta d"JOIN THE ARMY, SEE THE WORLD THEY SAID." L100 dta d"IT WASN'T JUST A JOB IT WAS AN ADVENTURE!" L101 dta d"I DIDN'T LIKE VIOLENCE ANYWAY!" L102 dta d"I THOUGHT YOU LIKED ME?" -L103 dta d"SUCH SENSELESS VIOLENCE! I DON'T UNDERSTAND IT." +L103 dta d"CTO XYEB" L104 dta d"I THINK THIS GUY'S A LITTLE CRAZY." L105 dta d"SOMEHOW I DON'T FEEL LIKE KILLING ANYMORE." L106 dta d"HEY! KILLIN' AIN'T COOL." diff --git a/lib/5200MACRO.ASM b/lib/5200MACRO.ASM index 58431b2..0aafe81 100644 --- a/lib/5200MACRO.ASM +++ b/lib/5200MACRO.ASM @@ -45,7 +45,8 @@ @ lda vcount bne @- mwa #:1 VVBLKD - lda #$40 ;Enable IRQ interrupts + mva #$40 nmien + ;Enable IRQ interrupts sta pokmsk sta irqen cli diff --git a/lib/5200SYS.ASM b/lib/5200SYS.ASM index 017dbab..e0f2ffe 100644 --- a/lib/5200SYS.ASM +++ b/lib/5200SYS.ASM @@ -11,8 +11,8 @@ POKMSK = $00 ;pokmsk at $00 on Atari 5200 instead of $10 on Atari RTCLOK = $01 ;Actually $01/$02 CRITIC = $03 ATRACT = $04 ;attact at $04 on Atari 5200 instead of $4D on Atari XL -DLPTRS = $05 ;sdlstl at $05/$06 on Atari 5200 instead of $230 on Atari XL -DMACTLS = $07 ;sdmactl at $07 on Atari 5200 instead of $22f on Atari XL +DLPTRS = $05 ;DLPTRS at $05/$06 on Atari 5200 instead of $230 on Atari XL +DMACTLS = $07 ;DMACTLS at $07 on Atari 5200 instead of $22f on Atari XL SSKCTL = skctl ;There is no shadow on Atari 5200 PCOLR0 EQU $08 ;P0 COLOR PCOLR1 EQU $09 ;P1 COLOR @@ -34,7 +34,9 @@ PADDL6 EQU $17 PADDL7 EQU $18 STICK0 = $19 ;There is no stick0 but we will make the analog stick look like a digital one and store it here STRIG0 = $1a ;There is no strig0 but we will make this the shadow of the TRIG0 ($c010) of GTIA -chbas = $1b ;There is no strig0 but we will make this the shadow of the CHBASE +chbas = $1b ;There is no CHBAS but we will make this the shadow of the CHBASE +CONSOL = $1c ;There are no console keys on Atari 5200, so we replace console h/w reads with a new shadow based on the keypad keys +consol_reset = $07;The constant value representing that no consol key is pressed ; PAGE 2 VIMIRQ EQU $0200 ;IMMED IRQ VECTOR @@ -57,9 +59,6 @@ ROM_SETTINGS = $bfe8 ; game ROM info start (24 bytes total, 20b title, 2b year, ; HARDWARE REGISTERS -; GTIA -CONSOL = $280 ;There are no console keys on Atari 5200, so we replace console h/w reads with a new shadow based on the keypad keys -consol_reset = $07 ;The constant value representing that no consol key is pressed ; --------------------------------------------------------------------------- POKEY EQU $EB00 ; --------------------------------------------------------------------------- diff --git a/scorch.asm b/scorch.asm index 010bdd3..671540c 100644 --- a/scorch.asm +++ b/scorch.asm @@ -6,7 +6,7 @@ ;Miami & Warsaw 2022 ;--------------------------------------------------- -.def target = 800 ;5200 ; or 800 +.def TARGET = 800; 5200 ; or 800 ;--------------------------------------------------- OPT r+ ; saves 12 bytes :O @@ -222,9 +222,11 @@ FirstSTART lda #$ff ;initial value sta sfx_effect - lda #0 - jsr RmtSongSelect + RMTSong 0 + .IF TARGET = 5200 + mva #$0f STICK0 + .ENDIF VMAIN VBLinterrupt,7 ;jsr SetVBL START @@ -1104,8 +1106,9 @@ MakeTanksVisible ldy dliCounter lda dliColorsBack,y ldy dliColorsFore - nop - nop + .IF TARGET = 800 + nop ; necessary on 800 because DLIs take less time, jitter visible without it + .ENDIF nop sta COLPF1 sty COLPF2 @@ -1152,7 +1155,7 @@ ColoredLines cmp #9 beq CreditsScroll tay - lda GameOverColoursTable-3,y ; -2 becouse this is DLI nr 2 and -1 (labels line) + lda GameOverColoursTable-3,y ; -2 because this is DLI nr 2 and -1 (labels line) ldy #$0a ; text colour (brightnes) STA WSYNC sta COLPF2 @@ -1186,8 +1189,9 @@ EndOfDLI_GO .proc DLIinterruptText ;sta dliA pha + lda #TextBackgroundColor sta WSYNC - mva #TextBackgroundColor COLPF2 + sta COLPF2 mva #TextForegroundColor COLPF3 ;lda dliA pla @@ -1231,32 +1235,35 @@ lab2 ; ------- RMT ------- SkipRMTVBL exitVBL - .IF target = 5200 -; center = 114 ;Read analog stick and make it look like a digital stick -; threshold = 60 -; -; lda pot0 ;Read POT0 value (horizontal position) -; cmp #center+threshold ;Compare with right threshold -; rol stick0 ;Feed carry into digital stick value -; cmp #center-threshold ;Compare with left threshold -; rol stick0 ;Feed carry into digital stick value -; -; lda pot1 ;Read POT1 value (vertical position) -; cmp #center+threshold ;Compare with down threshold -; rol stick0 ;Feed carry into digital stick value -; cmp #center-threshold ;Compare with down threshold -; rol stick0 ;Feed carry into digital stick value -; -; lda stick0 ;0 indicates a press so the right/down values need to be inverted -; eor #2+8 -; and #$0f -; sta stick0 -; -; mva trig0 strig0 ;Move hardware to shadow -; -; lda skstat ;Reset consol key shadow is no key is pressed anymore -; and #4 -; seq:mva #consol_reset consol + .IF TARGET = 5200 + center = 114 ;Read analog stick and make it look like a digital stick + threshold = 60 + + lda paddl0 ;Read POT0 value (horizontal position) + cmp #center+threshold ;Compare with right threshold + rol stick0 ;Feed carry into digital stick value + cmp #center-threshold ;Compare with left threshold + rol stick0 ;Feed carry into digital stick value + + lda paddl1 ;Read POT1 value (vertical position) + cmp #center+threshold ;Compare with down threshold + rol stick0 ;Feed carry into digital stick value + cmp #center-threshold ;Compare with down threshold + rol stick0 ;Feed carry into digital stick value + + lda stick0 ;0 indicates a press so the right/down values need to be inverted + eor #2+8 + and #$0f + sta stick0 + + mva trig0 strig0 ;Move hardware to shadow + + mva chbas chbase + + lda skstat ;Reset consol key shadow is no key is pressed anymore + and #4 + seq:mva #consol_reset consol + pla tay pla @@ -1536,19 +1543,20 @@ SetRandomWalls ;-------------------------------------------------- jsr WaitForKeyRelease @ - lda SKSTAT - cmp #$ff - beq checkJoyGetKey ; key not pressed, check Joy - cmp #$f7 ; SHIFT - beq checkJoyGetKey - - lda kbcode - and #$3f ;CTRL and SHIFT ellimination - cmp #28 ; ESC - bne getkeyend - mvx #$80 escFlag - bne getkeyend - + .IF TARGET = 800 + lda SKSTAT + cmp #$ff + beq checkJoyGetKey ; key not pressed, check Joy + cmp #$f7 ; SHIFT + beq checkJoyGetKey + + lda kbcode + and #$3f ;CTRL and SHIFT ellimination + cmp #28 ; ESC + bne getkeyend + mvx #$80 escFlag + bne getkeyend + .ENDIF checkJoyGetKey ;------------JOY------------- ;happy happy joy joy @@ -1584,15 +1592,13 @@ getkeyend ;-------------------------------------------------- .proc WaitForKeyRelease ;-------------------------------------------------- - .IF TARGET = 5200 - rts - .ELSE lda STICK0 and #$0f cmp #$0f bne WaitForKeyRelease lda STRIG0 beq WaitForKeyRelease + .IF TARGET = 800 lda SKSTAT cmp #$ff bne WaitForKeyRelease @@ -1637,6 +1643,7 @@ noKey .endp MakeDarkScreen mva #0 dmactls ; dark screen + sta dmactl ; and wait one frame :) .proc WaitOneFrame lda CONSOL @@ -1678,7 +1685,7 @@ noingame .proc CopyFromROM ;------------------------------------------------- ;copy from CART to RAM -; trashes Y +; trashes: Y ; temp: source ; temp2: destination ; modify: destination-end @@ -1732,7 +1739,7 @@ TankFont org $b000 MODUL ; equ $b000 ;address of RMT module ;opt h- ;RMT module is standard Atari binary file already - ins "artwork/sfx/scorch_str6.rmt",+6 ;include music RMT module + ins "artwork/sfx/scorch_str6.rmt",+6 ;include music RMT module ;opt h+ MODULEND ;---------------------------------------------- diff --git a/scorch.bin b/scorch.bin index 95d520720f5151254082f8219395c5a6eff3787b..0f3bdecf1e7c3a6e0a1cb3f1bc7fa1432223fb00 100644 GIT binary patch delta 7925 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 D8l-bj delta 8115 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 diff --git a/scorch.xex b/scorch.xex index 3cdd77320de2caa136caa507c879c85783667da2..b90490160d857724bcbdce669c6787583af45a5c 100644 GIT binary patch delta 7516 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 KJQiU5jrxBPh8Q;h delta 7450 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