From 4078722b29696cb7ae90e5b2bb9d6f77967c1b56 Mon Sep 17 00:00:00 2001 From: pkali Date: Mon, 12 Sep 2022 00:21:23 -0400 Subject: [PATCH] 5200 cart size full music, a 4KiB glitch to be fixed still --- definitions.asm | 3 -- display.asm | 9 ----- display_static.asm | 2 +- scorch.asm | 54 ++++++++++++----------------- scorch.xex | Bin 50149 -> 31868 bytes variables.asm | 82 ++++++++++++++++++++++++++------------------- 6 files changed, 70 insertions(+), 80 deletions(-) diff --git a/definitions.asm b/definitions.asm index 8defb80..8c3de4b 100644 --- a/definitions.asm +++ b/definitions.asm @@ -13,9 +13,6 @@ PMGraph = $1800 ; real PM start = PMGraph + $0300 linetableL = PMGraph + $0300 - (screenHeight+1)*2 linetableH = PMGraph + $0300 - (screenHeight+1) display = $2010 ;screen takes $1f68 because it has screenHeight+1 lines because of out of screen tracer(?) -;rmtplyr len = $393, align to the beginning of the page. -rmt_compilation_addr = ((linetableL - $393) / $100)*$100 ; $1500 for now -rmt_memory_start = rmt_compilation_addr - $320 ; $11e0 for now .else ;---------------------------------------------- ; Player/missile memory diff --git a/display.asm b/display.asm index 4da3c22..7dbfcbd 100644 --- a/display.asm +++ b/display.asm @@ -28,15 +28,6 @@ OptionsHere OptionsScreenEnd ;----------------------------------------------- -ListOfWeapons - ; 0123456789012345678901234567890123456789 -; :number_of_offensives dta d" " - :32 dta d" " -ListOfWeapons1End -ListOfDefensiveWeapons -; :number_of_defensives dta d" " - :16 dta d" " -ListOfDefensiveWeaponsEnd ;constant useful when clearing NameScreen dta d" Enter names of players " dta d" Tank 01 Name:" diff --git a/display_static.asm b/display_static.asm index b8f8d10..c81c5a6 100644 --- a/display_static.asm +++ b/display_static.asm @@ -106,7 +106,7 @@ dl ; MAIN game display list .byte $41 .word dl ;----------------------------------------------- - .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! + ;.ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! OptionsDL .byte $70 .byte $47 diff --git a/scorch.asm b/scorch.asm index 6e428fc..302ee76 100644 --- a/scorch.asm +++ b/scorch.asm @@ -5,17 +5,17 @@ ;Warsaw 2000,2001,2002,2003,2009,2012,2013 ;Miami & Warsaw 2022 -.def target = 800 ;5200 ; or 800 +.def target = 5200 ; or 800 .macro build dta d"1.13" ; number of this build (3 bytes) .endm .macro RMTSong - .IF target != 5200 + ; .IF target != 5200 lda #:1 jsr RMTSongSelect - .ENDIF +; .ENDIF .endm icl 'definitions.asm' @@ -139,7 +139,7 @@ ;Game loading address .IF target = 5200 - ORG rmt_memory_start - (variablesEnd - OneTimeZeroVariables + 1) + ORG linetableL - (variablesEnd - OneTimeZeroVariables + 1) icl 'variables.asm' ORG $4000 .ELSE @@ -1686,33 +1686,23 @@ TankFont ;RMT PLAYER and song loading shenaningans - .IF target = 5200 -;---------------------------------------------- - ; 5200 memory layout -PLAYER = $1500 -;RASTERMUSICTRACKER = PLAYER -;RMTSFXVOLUME = $1669 -PlayerBlobDest = $1282 -PlayerBlob - ; this is rmtplayr.a65 compiled with artwork/sfx/rmt_player_bin_blob.asm - ; the compiled .xex was loaded to atari memory in Altirra and saved with - ; .writemem rmtplr_blob.bin 1282 L614 - ; I hate this solution, but the alternative would be rewriting RMT player so it uses no ORG inside - ; the player in 5200 mode takes memory from $11E0 !!! - ; WARNING!!!! Adding zpage vars require recompilation of rmt_player_bin_blob.asm !!!!!!!! -; ins 'artwork/sfx/rmtplr_blob.bin' -PlayerBlobEnd - ORG PLAYER - icl 'artwork/sfx/rmtplayr.a65' - .align $100 - org $b400 - -MODUL - ;opt h- ;RMT module is standard Atari binary file already - ins "artwork/sfx/scorch_SFX-only-str.rmt",+6 ;so remove the header to reallocate - ;opt h+ - .ELSE -;---------------------------------------------- +; .IF target = 5200 +;;---------------------------------------------- +; ; 5200 memory layout +; +; .ds $0320 +; .align $100 +; +;PLAYER icl 'artwork/sfx/rmtplayr_modified.asm' +; +; org $b500 +; +;MODUL +; ;opt h- ;RMT module is standard Atari binary file already +; ins "artwork/sfx/scorch_SFX-only-str.rmt",6 ;so remove the header to reallocate +; ;opt h+ +; .ELSE +;;---------------------------------------------- ; normal (A800) memory layout ; reserved space for RMT player .ds $0320 @@ -1723,7 +1713,7 @@ MODUL equ $b000 ;address of RMT module opt h- ;RMT module is standard Atari binary file already ins "artwork/sfx/scorch_str6.rmt" ;include music RMT module opt h+ - .ENDIF +; .ENDIF ; MODULEND ;---------------------------------------------- diff --git a/scorch.xex b/scorch.xex index 1d798f917d4ada0581256f1aefb18074b7f9be2f..ef72573f892cfed265855a626e6b7aa9f0fcc26a 100644 GIT binary patch delta 16684 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⪚A47WaQ)?*8eF}B^S@$x7IlsVy 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 PcJbbGVgCqwH|PHWO|z9; diff --git a/variables.asm b/variables.asm index fe9c7d2..69416c5 100644 --- a/variables.asm +++ b/variables.asm @@ -26,7 +26,7 @@ TanksNames ; DO NOT ZERO ON GAME RESTART - ticket #24 .ds 6*8 ;---------------------------------------------------- skilltable ; computer controlled players' skills (1-8), 0 - human (no cleaning, ticket #30) - .DS [MaxPlayers] + .DS MaxPlayers ;---------------------------------------------------- variablesToInitialize ;Options DO NOT ZERO ON RESTART GAME - ticket #27 @@ -47,6 +47,18 @@ ResultLineBuffer ;===================================================== variablesStart ; zeroing starts here ;===================================================== +; This is moved from display.asm to be easier to relocate +ListOfWeapons + ; 0123456789012345678901234567890123456789 +; :number_of_offensives dta d" " + ;:32 dta d" " + .ds 32*32 +ListOfWeapons1End +ListOfDefensiveWeapons +; :number_of_defensives dta d" " + ;:16 dta d" " + .ds 16*32 +ListOfDefensiveWeaponsEnd ;constant useful when clearing ;isInventory .ds 1 ; 0 - purchase, $ff - inventory ;-------------- drawFunction .ds 1 ; 0 - plot, %10000000 - LineLength (N), %01000000 - DrawCheck (V) @@ -57,69 +69,69 @@ OptionsY .ds 1 ;vertical position of cursor on Options screen flyDelay .ds 1 ;-------------- ;NumberOfPlayers .DS 1 ;current number of players (counted from 1) -TankSequence .DS [MaxPlayers] ;sequence of shooting during the Round +TankSequence .DS MaxPlayers ;sequence of shooting during the Round GameIsOver .DS 1 ; 1 means it was the last round in the game ;---------------------------------------------------- moneyH ;we place zero at the end of prices and money ;and have range from 0 to 99990 (not too much) ;money players have (maybe one more byte is needed?) - .DS [MaxPlayers] + .DS MaxPlayers moneyL - .DS [MaxPlayers] + .DS MaxPlayers ;---------------------------------------------------- gainH ;how much money player gets after the round ;it is gathered during the round basing on energy ;opponents lose after player's shoots - .DS [MaxPlayers] + .DS MaxPlayers gainL - .DS [MaxPlayers] + .DS MaxPlayers ;---------------------------------------------------- loseH ;how much player looses after the round ;calculated from REAL energy loss ;(not only to zero energy) - .DS [MaxPlayers] + .DS MaxPlayers loseL - .DS [MaxPlayers] + .DS MaxPlayers ;---------------------------------------------------- Energy - .DS [MaxPlayers] + .DS MaxPlayers ShieldEnergy - .DS [MaxPlayers] + .DS MaxPlayers EnergyDecrease .DS 1 eXistenZ - .DS [MaxPlayers] + .DS MaxPlayers LASTeXistenZ ; eXistenZ before shoot - .DS [MaxPlayers] + .DS MaxPlayers ResultsTable ;the results in the gameeeeee - .DS [MaxPlayers] + .DS MaxPlayers TempResults - .DS [MaxPlayers] + .DS MaxPlayers DirectHitsH - .DS [MaxPlayers] + .DS MaxPlayers DirectHitsL - .DS [MaxPlayers] + .DS MaxPlayers EarnedMoneyH - .DS [MaxPlayers] + .DS MaxPlayers EarnedMoneyL - .DS [MaxPlayers] + .DS MaxPlayers ;---------------------------------------------------- ForceTableL ;shooting Force of the tank during the round - .DS [MaxPlayers] + .DS MaxPlayers ForceTableH - .DS [MaxPlayers] ;maxplayers=6 + .DS MaxPlayers ;maxplayers=6 MaxForceTableL ;Energy of the tank during the round ;(limes superior force of the Shoot) - .DS [MaxPlayers] ;1000 is the default + .DS MaxPlayers ;1000 is the default MaxForceTableH - .DS [MaxPlayers] + .DS MaxPlayers ;---------------------------------------------------- BarrelLength ;length of the tank barrel - dont forget to set it to 6 at round start! - .DS [MaxPlayers] + .DS MaxPlayers ActiveWeapon ;number of the selected weapon - .DS [MaxPlayers] + .DS MaxPlayers ActiveDefenceWeapon ;number of the activated defence weapon - 0 - .DS [MaxPlayers] + .DS MaxPlayers WeaponDepleted .DS 1 ; if 0 deactivate the weapon and switch to Baby Missile ;---------------------------------------------------- @@ -143,13 +155,13 @@ WindOrientation .DS 1 ;(0-right,1-left) WallsType .ds 1 ; bits 6 and 7: 00 - none, 01 - bump, 10 - wrap, 11 - boxy ;---------------------------------------------------- xtankstableL ;X positions of tanks (lower left point) - .DS [MaxPlayers] + .DS MaxPlayers xtankstableH - .DS [MaxPlayers] + .DS MaxPlayers ytankstable ;Y positions of tanks (lower left point) - .DS [MaxPlayers] + .DS MaxPlayers LowResDistances ; coarse tank positions divided by 4 (to be in just one byte) - .DS [MaxPlayers] + .DS MaxPlayers ;---------------------------------------------------- TargetTankNr ; Target tank index (for AI routines) .DS 1 @@ -368,24 +380,24 @@ CurrentResult .DS 1 ;-------------- AngleTable ;Angle of the barrel of each tank during the round - .DS [MaxPlayers] + .DS MaxPlayers ;NewAngle ; used in AI .DS 1 ;previousBarrelAngle -; .DS [MaxPlayers] +; .DS MaxPlayers EndOfTheBarrelX .ds 2 EndOfTheBarrelY .ds 1 ;---------------------------------------------------- previousAngle - .DS [MaxPlayers] + .DS MaxPlayers previousEnergyL - .DS [MaxPlayers] + .DS MaxPlayers previousLeftRange - .DS [MaxPlayers] + .DS MaxPlayers previousEnergyH - .DS [MaxPlayers] + .DS MaxPlayers RandBoundaryLow .ds 2 RandBoundaryHigh