mirror of
https://github.com/antoinevignau/source.git
synced 2024-11-15 13:05:18 +00:00
387 lines
11 KiB
ArmAsm
387 lines
11 KiB
ArmAsm
*
|
|
* Lode Runner
|
|
* (c) 1983, Broderbund Software
|
|
* (s) 2014, Brutal Deluxe Software
|
|
*
|
|
|
|
mx %11
|
|
lst off
|
|
|
|
* Sprites : 102
|
|
|
|
* sprEMPTY = 0
|
|
* sprWALL = 1
|
|
* sprWALLI = 2 ; mur indestructible
|
|
* sprLADDER = 3
|
|
* sprBAR = 4
|
|
* sprTRAP = 5
|
|
* sprLADDERI = 6
|
|
* sprCHEST = 7
|
|
* sprFOE = 8
|
|
* sprHERO = 9
|
|
|
|
* 3B: 0
|
|
* 45: A
|
|
* 5E: Z
|
|
|
|
*---------------------------------------
|
|
* HGR 280 x 192
|
|
* Board 28 x 16
|
|
* Sprite 10 x 11
|
|
* --------------------
|
|
* 280 x 171
|
|
|
|
*--- Decoded level (28 x 16)
|
|
|
|
L0800 DS lvlWIDTH ; le plateau avec les personnages
|
|
L081C DS lvlWIDTH
|
|
L0838 DS lvlWIDTH
|
|
L0854 DS lvlWIDTH
|
|
L0870 DS lvlWIDTH
|
|
L088C DS lvlWIDTH
|
|
L08A8 DS lvlWIDTH
|
|
L08C4 DS lvlWIDTH
|
|
L08E0 DS lvlWIDTH
|
|
L08FC DS lvlWIDTH
|
|
L0918 DS lvlWIDTH
|
|
L0934 DS lvlWIDTH
|
|
L0950 DS lvlWIDTH
|
|
L096C DS lvlWIDTH
|
|
L0988 DS lvlWIDTH
|
|
L09A4 DS lvlWIDTH
|
|
ds \
|
|
|
|
L0A00 DS lvlWIDTH ; le plateau sans les personnages
|
|
L0A1C DS lvlWIDTH
|
|
L0A38 DS lvlWIDTH
|
|
L0A54 DS lvlWIDTH
|
|
L0A70 DS lvlWIDTH
|
|
L0A8C DS lvlWIDTH
|
|
L0AA8 DS lvlWIDTH
|
|
L0AC4 DS lvlWIDTH
|
|
L0AE0 DS lvlWIDTH
|
|
L0AFC DS lvlWIDTH
|
|
L0B18 DS lvlWIDTH
|
|
L0B34 DS lvlWIDTH
|
|
L0B50 DS lvlWIDTH
|
|
L0B6C DS lvlWIDTH
|
|
L0B88 DS lvlWIDTH
|
|
L0BA4 DS lvlWIDTH
|
|
ds \
|
|
|
|
*--- $0C00
|
|
|
|
sizeLI = 48 ; on pourrait avoir 48 Žchelles invisibles
|
|
tblLADDERIX ds sizeLI ; $0C00 mais le jeu n'en autorise
|
|
tblLADDERIY ds sizeLI ; que 45
|
|
|
|
sizeFOE = 8 ; on pourrait avoir 8 ennemis
|
|
tblFOEX ds sizeFOE ; $0C60 mais le jeu n'en autorise
|
|
tblFOEY ds sizeFOE ; que 5
|
|
tblFOEACTION ds sizeFOE
|
|
tblFOESTEPX ds sizeFOE ; animation step in x-coord
|
|
tblFOESTEPY ds sizeFOE ; animation step in y-coord
|
|
tblFOEINDEX ds sizeFOE ; animation index
|
|
tblFOELEFTRIGHT ds sizeFOE ; does foe runs to the left or to the right?
|
|
tblFOETEMPO ds sizeFOE ; performs actions based on value
|
|
|
|
sizeHOLE = 32 ; nombre de trous possibles
|
|
tblHOLEX ds sizeHOLE ; $0CA0 X des trous
|
|
tblHOLEY ds sizeHOLE ; Y des trous
|
|
tblHOLET ds sizeHOLE ; tempo des trous
|
|
|
|
*--- $0D00 - Level buffer from/to disk
|
|
|
|
levelDISK ds 256
|
|
|
|
*--- $0E00 - buffer pour le son
|
|
|
|
sndDURATION ds 128
|
|
sndNOTE ds 128
|
|
|
|
*--- $0F00 - Title page until $1A84
|
|
|
|
logo HEX 128518851C9423A80011A09518851C94
|
|
HEX 23A80011A09518851C9423A80011A8D0
|
|
HEX 18851C9423A80006940C8511A8D01885
|
|
HEX 1C9423A80006940C8511A8D018851C94
|
|
HEX 23A80006940C8511A8D018851C9423A8
|
|
HEX 000484A0D582908081A8D5808411A8D0
|
|
HEX 18851C9423A8000494A0D582948085A8
|
|
HEX D5808511A89418851C9423A80004D5A0
|
|
HEX D582D5A095A8D5A09511A8958085A880
|
|
HEX A885A880A8D48294A8C082C0AA0004D5
|
|
HEX 8294A0D5A0D58085A89511A895A085AA
|
|
HEX 81AA85AA81AAD48A94A8D08AD0AA0004
|
|
HEX D58A94A8D5A0D58285AA9511A895A085
|
|
HEX AA80AA85AA81AAD48A94A8D08AD0AA00
|
|
HEX 0494AA94AA9480C58AC58A8511A8D4A8
|
|
HEX C18AC482C582C58A94A894A894A894A8
|
|
HEX 000494A8D58A948085AAD5828511A8D0
|
|
HEX A8C082C582C582C58294A894A894A894
|
|
HEX A8000490A0D582948085A8D5808511A8
|
|
HEX D0A8C082C582C582C58294A894A894A8
|
|
HEX 94A80004D080D580858094A095A08111
|
|
HEX A8D0A8C082C582C5AAC18294A894A894
|
|
HEX A894A80004D0088580940DA08111A8D0
|
|
HEX A8C082C582C5AAC18294A894A894A894
|
|
HEX A80004D0088580940DA08111A8D0A8C0
|
|
HEX 82C582C5AAC08294A894A894A894A800
|
|
HEX 04D0088580940DA08111A8D0A8C082C5
|
|
HEX 82C582C08294A894A894A894A80004D0
|
|
HEX 08858A940DA08111A8D0A8C080C582C5
|
|
HEX 82C48294A894A894A894A80004C08280
|
|
HEX A0818AD00DA811A8D0A88080C582C582
|
|
HEX C58294A894A894A894A80004C08280A0
|
|
HEX 818AD00DA811A895A880AA81AA81AAC1
|
|
HEX 82D08AD08A94A8D08A0004C08280A0D1
|
|
HEX AAD10DA811A895A880AA81AA81AAC182
|
|
HEX D08AD08A94A8D08A0004C08280A0D1AA
|
|
HEX D10DA811A885A880A880A880A8C082C0
|
|
HEX 82C08294A8C0820005AAD5A2D1AAD1A8
|
|
HEX D58A0005AAD582818A90A8D58A0005AA
|
|
HEX D582858A94A8D58A00078A958A958A13
|
|
HEX A08517A08100078AD4AA858A13A88517
|
|
HEX A88100078AD0AA818A13A88517A8D100
|
|
HEX 07A8C0AAC08213AA17AAD00007A80AC0
|
|
HEX 82138A178AD00007A80AC082138A178A
|
|
HEX D00007A80AC082138A178AD00007A80A
|
|
HEX C082138A178AD00007A08180D0138A17
|
|
HEX 8AD00007A08180D013A880A8C0AAD482
|
|
HEX 858A94A081A0C18A0007A08180D013A8
|
|
HEX 80AAC1AAD482858A94A885A8C1AA0007
|
|
HEX A08180D013A880AAC1AAD482858A94A8
|
|
HEX 85A8D1AA0008D5AA9513A8C182858AD0
|
|
HEX 80858A948A94AAD0A0810008D5AA9513
|
|
HEX A0C182858AD080858A9482948AD0A081
|
|
HEX 0008D5AA9513A0C582858AD080858A94
|
|
HEX 80948AD0A0810014C582858AD080858A
|
|
HEX 94A0958AD0AA0014C582858AD080858A
|
|
HEX 94A8958AD0AA0014C582858AD080858A
|
|
HEX 94A8958AD08A0014C582858AD080858A
|
|
HEX 948A948AD00014C582858AD080858A94
|
|
HEX 8A948AD080810013A0C582858AD08285
|
|
HEX 8A948A948AD0A0810013AA81AA818AC0
|
|
HEX 8AD4AA85A8858AC0AA0013AA81AA818A
|
|
HEX C08AD4AA85A8858AC0AA0013AA80A880
|
|
HEX 8A808AD0A081A0818A808A0000000000
|
|
HEX 0000000000000DD08A000DD0A817C082
|
|
HEX 000DD0A817C082000DD0A8D08295A095
|
|
HEX A881AAD08AD482000DD08A94A0D1A880
|
|
HEX 8AC5A2C18285000DD08094A0D1A8808A
|
|
HEX C5A2C18285000DD08094A095A085AAC1
|
|
HEX A2C182D4000DD08094A08180948AC0A2
|
|
HEX C182C082000DD08094A08180948AC0A2
|
|
HEX C182C082000DD080948095A885A8C1A2
|
|
HEX 818AD50000000000000000000000C0FF
|
|
HEX 9F09C0FF9F11FEFFFF9F00E0FFBF09E0
|
|
HEX FFBF11FFFFFFBF0080FFBF0AFFBF11FC
|
|
HEX FFFFBF0080FFBF0AFFBF11FCFFFFBF00
|
|
HEX 80FFBF0AFFBF11FEFFFFBF00C0FFBF0A
|
|
HEX FF9F11FEFFFFBF00C0FFBF0AFF9F11FE
|
|
HEX FFFFBF00C0FF9F0AFF9F11FEFFFFBF00
|
|
HEX C0FF9F80F0FFFF83F8FFFF9FF8FFFF80
|
|
HEX 80FFBFFC9FF8FFFCBFFCFFF8FFF0FFF3
|
|
HEX FF80FFFF9FFE9FBE00C0FF9F80FCFFFF
|
|
HEX 87FCFFFF9FFCFFFF8180FFBFF89FFCFF
|
|
HEX F9FFF8FFFEFFE1FFFBFFC0FFFF9FFFBF
|
|
HEX BF00E0FF9F80FCFFFF87FEFFFF8FFEFF
|
|
HEX FF8180FFBFF89FF0FFF9FFF8FFFEFFE1
|
|
HEX FFFBFFE1FFFFBFFCFFBF00E0FF9F80FE
|
|
HEX FFFF87FFFFFF8FFEFFFF8180FFBFF89F
|
|
HEX F0FFF9FFF8FFFFFFE1FFFFFFE1FFFFBF
|
|
HEX FCFFBF00E0FF8F80FEFFFF87FFFFFF8F
|
|
HEX FFFFFF8180FF9FFC9FF0FFF8BFF8FFFF
|
|
HEX FFE1FFFFFFF1FFFFBFFEFF9F00E0FF8F
|
|
HEX 80FEFFFFC7FFFFFF8FFFFFFF81C0FF9F
|
|
HEX FC8FF0FFFCBFF8FFFFFFE1FFFFFFF0FF
|
|
HEX FFBFFEFF9F00F0FF8F80FEFFFFC7FFFF
|
|
HEX FFC7FFFFFF81C0FF9FFE8FF0FFFCBFF8
|
|
HEX FFFFFFE1FFFFFFF0FFFF9FFEFF9F00F0
|
|
HEX FF8F80FFFFFFE7FFFFFFC7FFFFFF81C0
|
|
HEX FFFFFF8FF0FFFCBFF8FFFFFFE1FFFFFF
|
|
HEX F0FFFF9FFEFF8F00F0FF8780FF87FFE7
|
|
HEX FFE1FFC7FFC3FF81C0FFFFFF8FF8BFFC
|
|
HEX BFF8FFFCFFF0FFF9FFF8FFE19FFEBF00
|
|
HEX F0FF8780FFC7FFE3FFE1FFE7FFE1FF81
|
|
HEX E0FFFFFF87F8BFFC9FFCFFFCFFF0FFF8
|
|
HEX FFF8FFF09FFF9F00F0FF8780FFC7FFE3
|
|
HEX FFF1FFE7FFE1FF80E0FFFFFF81F8BFFE
|
|
HEX 9FFCBFFCFFF0FFF8BFF8FFF08FFF9F00
|
|
HEX F8FF87C0FFC3FFF3FFF1FFE3FFFFFF80
|
|
HEX E0FFFFFF80F8BFFE9FFCBFFCFFF0FFF8
|
|
HEX BFF8FFFF8FFF8F00F8FF87C0FFC3FFF3
|
|
HEX FFF0FFF3FFFFFF80E0FFFFBF80F89FFE
|
|
HEX 9FFCBFFCBFF8FFFCBFFCFFFF8FFF8F00
|
|
HEX F8FF83C0FFC3FFF3FFF0FFF3FFFFBF80
|
|
HEX E0FFFFBF80FC9FFE8FFCBFFCBFF8BFFC
|
|
HEX BFFCFFFFCFFF8F00F8FF83C0FFE3FFF9
|
|
HEX FFF0FFF3FFFFBF80F0FFFFBF80FC9FFE
|
|
HEX 8FFEBFFEBFF8BFFC9FFCFFFFC7FF8F00
|
|
HEX F8FF83E0FFE1FFF9FFF8FFF9FF838080
|
|
HEX F0FFFFFF80FC9FFF8FFE9FFEBFF8BFFC
|
|
HEX 9FFCBF80C0FF8700FCFF83E0FFE1FFF9
|
|
HEX BFF8FFF9FF818080F0FFFFFF80FC9FFF
|
|
HEX 8FFE9FFE9FF8BFFE9FFEBF80C0FF8700
|
|
HEX FCFF81E0FFE1FFF9BFF8FFF9FF818080
|
|
HEX F0FFFBFF81FE8FFF8FFE9FFE9FFCBFFE
|
|
HEX 9FFE9F80C0FF8700FCFF81E4FFF1FFF8
|
|
HEX BFF8FFF9FF809080F8FFF3FF81FECFFF
|
|
HEX 87FF9FFF9FFC9FFE9FFE9F80E2FF8700
|
|
HEX FCFF81E6FFF1FFF8BFFCFFF9FF819880
|
|
HEX F8FFF3FF81FECFFF87FF8FFF9FFC9FFE
|
|
HEX 8FFEBF80E3FF8300FEFFFFF7FFFFFFF8
|
|
HEX FFFFFFFCFFFF9F80F8FFF3FF93FEFFFF
|
|
HEX 87FF8FFF8FFC9FFE8FFEFFFFE3FF8300
|
|
HEX FEFFFFF7FFFFFFFCFFFFFFFCFFFF9F80
|
|
HEX F8FFF3FF9FFFFFFF87FF8FFF8FFE9FFF
|
|
HEX 8FFEFFFFE3FF8300FEFFFFF3FFFFFFFC
|
|
HEX FFFFFFFCFFFF8F80F8FFE1FF9FFFFFFF
|
|
HEX 83FF8FFF8FFE8FFF8FFFFFFFE3FF8300
|
|
HEX FEFFFFF3FFFFBFFCFFFFFFFCFFFF8F80
|
|
HEX FCFFE1FF9FFFFFFFC3FFC7FF8FFE8FFF
|
|
HEX 87FFFFFFF3FF8100FEFFFFF3FFFFBFFC
|
|
HEX FFFFBFFCFFFF8F80FCFFE1FF8FFFFFFF
|
|
HEX C3FFC7FF8FFE8FFF87FFFFFFF1FF8100
|
|
HEX FEFFFFF3FFFFBFFCFFFFBFFCFFFF8F80
|
|
HEX FCFFE1FFCFFFFFFFC3FFC7FF87FECFFF
|
|
HEX 87FEFFFFF1FF8100FEFFFFF1FFFFBFFC
|
|
HEX FFFEBFF8FFFF8780FCFFC1FFCFFFFFFF
|
|
HEX C3FFC7FF87FFC7FF87FEFFFFF1FF8100
|
|
HEX FEFFFFE1FFFF9FF8BFFEBFF8FFFF8780
|
|
HEX FCFFC1FFC7FFEFFFC3FFC7FF87FFC7FF
|
|
HEX 87FEFFFFF1FF8100FEFFFFE1FFFF9FF8
|
|
HEX BFFEFFF1FFFF8780FCFFC3FFC7FFE7FF
|
|
HEX CFFFDFFF9FFF9FFF9FFCFFFFF0FF8700
|
|
HEX FCFFFFC0FFFF8FF09FFCFFE0FFFF8380
|
|
HEX F0FF81FF87FFE7FFC7FFCFFF8FFE8FFF
|
|
HEX 8FF8FFBFF0FF83000000000000000000
|
|
HEX 000012AA8100128A8500128A8500128A
|
|
HEX 850012AAC1A28100128AC5A28100128A
|
|
HEX C5A28100128AC5A28100128AC5A28100
|
|
HEX 12AA81AA810014A0810014A0810014AA
|
|
HEX 00000000000000000000000BA0D514D0
|
|
HEX AA000BA0C182149419A0C182000BA0C1
|
|
HEX 82149418D0A0C182000BA0C182149418
|
|
HEX D0A0C182000BA0C182149419A0C18200
|
|
HEX 0BA0C182D5A0C182D582D08AD0AAD0A8
|
|
HEX C5AA81000BA0C1A2C1A2C1A2C18280A8
|
|
HEX 94A2D1A0C18285000BA0C1A2C1A2C1A2
|
|
HEX C18280A894A2D1A0C18285000BA0C1A2
|
|
HEX C1A2C1A2C18280A894A2D1A0C1828500
|
|
HEX 0BA0C1A2C1A2C1A2C18280A894A2D1A0
|
|
HEX C18285000BA0C1A2C1A2C1A2C18280A8
|
|
HEX 94A2D1A0C18285000BA0D580D580D580
|
|
HEX D582D48A94A2D180C582850012C08200
|
|
HEX 12C0820012C0820012D5000000000000
|
|
HEX 00000000000000000BB09E83F88113C0
|
|
HEX 81B0C08180E3C3878F000B98B3868C83
|
|
HEX 13C081B0C08180B3E6CC99000B8C838C
|
|
HEX 8C15B0F08780B3E68C98000B8C838C8C
|
|
HEX E0E3C799CEF1F1C38180B3C6878E000B
|
|
HEX 8C838C8CB0E6CC99C399B3C68180E3E7
|
|
HEX 8C98000B8C838C8CB0E6CC99C399B3C6
|
|
HEX 818083E68C98000B98B3868CB3E6CC99
|
|
HEX C399B3C6818083E6CC99000BB09E83F8
|
|
HEX E1E3879FC3F1B3868780E3C3878F0010
|
|
HEX E0809815830010E0809815830010E080
|
|
HEX 8F80F08100
|
|
|
|
*--- Line numbers
|
|
|
|
xhgr
|
|
]debut = $2000
|
|
lup 200
|
|
dfb <]debut
|
|
]debut = ]debut+160
|
|
--^
|
|
|
|
yhgr
|
|
]debut = $2000
|
|
lup 200
|
|
dfb >]debut
|
|
]debut = ]debut+160
|
|
--^
|
|
|
|
*--- Level line numbers
|
|
|
|
tblBOARDALLL
|
|
DFB <L0800,<L081C,<L0838,<L0854,<L0870,<L088C,<L08A8,<L08C4
|
|
DFB <L08E0,<L08FC,<L0918,<L0934,<L0950,<L096C,<L0988,<L09A4
|
|
tblBOARDALLH
|
|
DFB >L0800,>L081C,>L0838,>L0854,>L0870,>L088C,>L08A8,>L08C4
|
|
DFB >L08E0,>L08FC,>L0918,>L0934,>L0950,>L096C,>L0988,>L09A4
|
|
tblBOARDBACKL
|
|
DFB <L0A00,<L0A1C,<L0A38,<L0A54,<L0A70,<L0A8C,<L0AA8,<L0AC4
|
|
DFB <L0AE0,<L0AFC,<L0B18,<L0B34,<L0B50,<L0B6C,<L0B88,<L0BA4
|
|
tblBOARDBACKH
|
|
DFB >L0A00,>L0A1C,>L0A38,>L0A54,>L0A70,>L0A8C,>L0AA8,>L0AC4
|
|
DFB >L0AE0,>L0AFC,>L0B18,>L0B34,>L0B50,>L0B6C,>L0B88,>L0BA4
|
|
|
|
*--- From a X in board to a X in HGR
|
|
|
|
xtable
|
|
]debut = 10
|
|
lup lvlWIDTH
|
|
dfb ]debut
|
|
]debut = ]debut+5
|
|
--^
|
|
|
|
*--- From a Y in board to a Y in HGR
|
|
|
|
ytable DB $00 ; HGR line index
|
|
DB $0B ; 0.11.22.33
|
|
DB $16 ; 22
|
|
DB $21 ; 33
|
|
DB $2C ; 44
|
|
DB $37 ; 55
|
|
DB $42 ; 66
|
|
DB $4D ; 77
|
|
DB $58 ; 88
|
|
DB $63 ; 99
|
|
DB $6E ; 110
|
|
DB $79 ; 121
|
|
DB $84 ; 132
|
|
DB $8F ; 143
|
|
DB $9A ; 154
|
|
DB $A5 ; 165
|
|
DB $B5 ; 181 ; ligne de texte
|
|
|
|
*--- $1F00 - Score buffer
|
|
|
|
scorebuf ds 256
|
|
|
|
*--- RŽfŽrence des scores
|
|
|
|
scoreEMPTY hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 0000000000000000
|
|
hex 00000000CCCFC4C5A0D2D5CECEC5D2
|
|
hex 00 ; <= data disk
|