5200 cart size full music, a 4KiB glitch to be fixed still

This commit is contained in:
2022-09-12 00:21:23 -04:00
parent e782e101f5
commit 4078722b29
6 changed files with 70 additions and 80 deletions
-3
View File
@@ -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
-9
View File
@@ -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:"
+1 -1
View File
@@ -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
+22 -32
View File
@@ -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
;----------------------------------------------
BIN
View File
Binary file not shown.
+47 -35
View File
@@ -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