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 95d5207..0f3bdec 100644 Binary files a/scorch.bin and b/scorch.bin differ diff --git a/scorch.xex b/scorch.xex index 3cdd773..b904901 100644 Binary files a/scorch.xex and b/scorch.xex differ