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 1d798f9..ef72573 100644 Binary files a/scorch.xex and b/scorch.xex differ 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