summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-06-30 16:29:37 -0700
committerMarcus Huderle <huderlem@gmail.com>2017-06-30 16:29:37 -0700
commit15e6fda64336da34d3dc4772d61509330073126f (patch)
tree55a4756a13fa734823ecc3dbb60bcdbac3aa9555
parent5bf01e71c492d9377ba72507e8cc514f46cb28e5 (diff)
Move collision attributes routines into engine/pinball_game/stage_collision_attributes.asm
-rwxr-xr-xengine/pinball_game/stage_collision_attributes.asm149
-rwxr-xr-xmain.asm151
2 files changed, 150 insertions, 150 deletions
diff --git a/engine/pinball_game/stage_collision_attributes.asm b/engine/pinball_game/stage_collision_attributes.asm
new file mode 100755
index 0000000..80ff582
--- /dev/null
+++ b/engine/pinball_game/stage_collision_attributes.asm
@@ -0,0 +1,149 @@
+LoadStageCollisionAttributes: ; 0xe578
+ ld a, [wCurrentStage]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, StageCollisionAttributesPointers
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hli]
+ and a
+ jr z, .asm_e598
+ ld a, [wStageCollisionState]
+ sla a
+ ld c, a
+ sla a
+ add c
+ ld c, a
+ ld b, $0 ; bc = 6 * [wStageCollisionState]
+ add hl, bc
+.asm_e598
+ ld de, wStageCollisionMapPointer
+ ld b, $6
+.asm_e59d
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_e59d
+ call LoadCollisionAttributes
+ ret
+
+StageCollisionAttributesPointers: ; 0xe5a7
+ dw StageRedFieldTopCollisionAttributesPointers
+ dw StageRedFieldBottomCollisionAttributesPointers
+ dw StageUnusedCollisionAttributesPointers
+ dw StageUnused2CollisionAttributesPointers
+ dw StageBlueFieldTopCollisionAttributesPointers
+ dw StageBlueFieldBottomCollisionAttributesPointers
+ dw StageGengarBonusCollisionAttributesPointers
+ dw StageGengarBonusCollisionAttributesPointers
+ dw StageMewtwoBonusCollisionAttributesPointers
+ dw StageMewtwoBonusCollisionAttributesPointers
+ dw StageMeowthBonusCollisionAttributesPointers
+ dw StageMeowthBonusCollisionAttributesPointers
+ dw StageDiglettBonusCollisionAttributesPointers
+ dw StageDiglettBonusCollisionAttributesPointers
+ dw StageSeelBonusCollisionAttributesPointers
+ dw StageSeelBonusCollisionAttributesPointers
+
+StageRedFieldTopCollisionAttributesPointers: ; 0xe5c7
+ db $01 ; multiple pair entries
+ dwb StageRedFieldTopCollisionAttributes0, Bank(StageRedFieldTopCollisionAttributes0)
+ dwb StageRedFieldTopCollisionMasks0, Bank(StageRedFieldTopCollisionMasks0)
+ dwb StageRedFieldTopCollisionAttributes1, Bank(StageRedFieldTopCollisionAttributes1)
+ dwb StageRedFieldTopCollisionMasks0, Bank(StageRedFieldTopCollisionMasks0)
+ dwb StageRedFieldTopCollisionAttributes2, Bank(StageRedFieldTopCollisionAttributes2)
+ dwb StageRedFieldTopCollisionMasks1, Bank(StageRedFieldTopCollisionMasks1)
+ dwb StageRedFieldTopCollisionAttributes3, Bank(StageRedFieldTopCollisionAttributes3)
+ dwb StageRedFieldTopCollisionMasks1, Bank(StageRedFieldTopCollisionMasks1)
+ dwb StageRedFieldTopCollisionAttributes4, Bank(StageRedFieldTopCollisionAttributes4)
+ dwb StageRedFieldTopCollisionMasks2, Bank(StageRedFieldTopCollisionMasks2)
+ dwb StageRedFieldTopCollisionAttributes5, Bank(StageRedFieldTopCollisionAttributes5)
+ dwb StageRedFieldTopCollisionMasks2, Bank(StageRedFieldTopCollisionMasks2)
+ dwb StageRedFieldTopCollisionAttributes6, Bank(StageRedFieldTopCollisionAttributes6)
+ dwb StageRedFieldTopCollisionMasks3, Bank(StageRedFieldTopCollisionMasks3)
+ dwb StageRedFieldTopCollisionAttributes7, Bank(StageRedFieldTopCollisionAttributes7)
+ dwb StageRedFieldTopCollisionMasks3, Bank(StageRedFieldTopCollisionMasks3)
+
+StageRedFieldBottomCollisionAttributesPointers: ; 0xe5f8
+ db $00 ; single pair entry
+ dwb StageRedFieldBottomCollisionAttributes, Bank(StageRedFieldBottomCollisionAttributes)
+ dwb StageRedFieldBottomCollisionMasks, Bank(StageRedFieldBottomCollisionMasks)
+
+StageUnusedCollisionAttributesPointers: ; 0xe5ff
+; This entry is never used
+ db $00
+
+StageUnused2CollisionAttributesPointers: ; 0xe600
+; This entry is never used
+ db $00
+
+StageBlueFieldTopCollisionAttributesPointers: ; 0xe601
+ db $01 ; multiple pair entries
+ dwb StageBlueFieldTopCollisionAttributesBallEntrance, Bank(StageBlueFieldTopCollisionAttributesBallEntrance)
+ dwb StageBlueFieldTopCollisionMasks, Bank(StageBlueFieldTopCollisionMasks)
+ dwb StageBlueFieldTopCollisionAttributes, Bank(StageBlueFieldTopCollisionAttributes)
+ dwb StageBlueFieldTopCollisionMasks, Bank(StageBlueFieldTopCollisionMasks)
+
+StageBlueFieldBottomCollisionAttributesPointers: ; 0xe60e
+ db $00 ; single pair entry
+ dwb StageBlueFieldBottomCollisionAttributes, Bank(StageBlueFieldBottomCollisionAttributes)
+ dwb StageBlueFieldBottomCollisionMasks, Bank(StageBlueFieldBottomCollisionMasks)
+
+StageGengarBonusCollisionAttributesPointers: ; 0xe615
+ db $01 ; multiple pair entries
+ dwb StageGengarBonusCollisionAttributesBallEntrance, Bank(StageGengarBonusCollisionAttributesBallEntrance)
+ dwb StageGengarBonusCollisionMasks, Bank(StageGengarBonusCollisionMasks)
+ dwb StageGengarBonusCollisionAttributes, Bank(StageGengarBonusCollisionAttributes)
+ dwb StageGengarBonusCollisionMasks, Bank(StageGengarBonusCollisionMasks)
+
+StageMewtwoBonusCollisionAttributesPointers: ; 0xe622
+ db $01 ; multiple pair entries
+ dwb StageMewtwoBonusCollisionAttributesBallEntrance, Bank(StageMewtwoBonusCollisionAttributesBallEntrance)
+ dwb StageMewtwoBonusCollisionMasks, Bank(StageMewtwoBonusCollisionMasks)
+ dwb StageMewtwoBonusCollisionAttributes, Bank(StageMewtwoBonusCollisionAttributes)
+ dwb StageMewtwoBonusCollisionMasks, Bank(StageMewtwoBonusCollisionMasks)
+
+StageMeowthBonusCollisionAttributesPointers: ; 0xe62f
+ db $01 ; multiple pair entries
+ dwb StageMeowthBonusCollisionAttributesBallEntrance, Bank(StageMeowthBonusCollisionAttributesBallEntrance)
+ dwb StageMeowthBonusCollisionMasks, Bank(StageMeowthBonusCollisionMasks)
+ dwb StageMeowthBonusCollisionAttributes, Bank(StageMeowthBonusCollisionAttributes)
+ dwb StageMeowthBonusCollisionMasks, Bank(StageMeowthBonusCollisionMasks)
+
+StageDiglettBonusCollisionAttributesPointers: ; 0xe63c
+ db $01 ; multiple pair entries
+ dwb StageDiglettBonusCollisionAttributesBallEntrance, Bank(StageDiglettBonusCollisionAttributesBallEntrance)
+ dwb StageDiglettBonusCollisionMasks, Bank(StageDiglettBonusCollisionMasks)
+ dwb StageDiglettBonusCollisionAttributes, Bank(StageDiglettBonusCollisionAttributes)
+ dwb StageDiglettBonusCollisionMasks, Bank(StageDiglettBonusCollisionMasks)
+
+StageSeelBonusCollisionAttributesPointers: ; 0xe649
+ db $01 ; multiple pair entries
+ dwb StageSeelBonusCollisionAttributesBallEntrance, Bank(StageSeelBonusCollisionAttributesBallEntrance)
+ dwb StageSeelBonusCollisionMasks, Bank(StageSeelBonusCollisionMasks)
+ dwb StageSeelBonusCollisionAttributes, Bank(StageSeelBonusCollisionAttributes)
+ dwb StageSeelBonusCollisionMasks, Bank(StageSeelBonusCollisionMasks)
+
+LoadCollisionAttributes: ; 0xe656
+; Loads the stage's collision attributes into RAM
+; Input: [wStageCollisionMapPointer] = pointer to collision attributes map
+; [wStageCollisionMapBank] = ROM bank of collision attributes map
+ ld hl, wStageCollisionMapPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wStageCollisionMapBank]
+ ld de, wStageCollisionMap
+ ld bc, $0300
+ call FarCopyData
+ ld hl, wStageCollisionMapPointer
+ ld [hl], (wStageCollisionMap & $ff)
+ inc hl
+ ld [hl], (wStageCollisionMap >> 8)
+ inc hl
+ ld [hl], $0 ; Bank 0, because the data is in WRAM, so it doesn't matter which bank is saved
+ ret
diff --git a/main.asm b/main.asm
index dbc7e2b..6d19f29 100755
--- a/main.asm
+++ b/main.asm
@@ -1897,156 +1897,7 @@ INCLUDE "engine/pinball_game/ball_loss/ball_loss_meowth_bonus.asm"
INCLUDE "engine/pinball_game/ball_loss/ball_loss_diglett_bonus.asm"
INCLUDE "engine/pinball_game/ball_loss/ball_loss_seel_bonus.asm"
INCLUDE "engine/pinball_game/flippers.asm"
-
-LoadStageCollisionAttributes: ; 0xe578
- ld a, [wCurrentStage]
- sla a
- ld c, a
- ld b, $0
- ld hl, StageCollisionAttributesPointers
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [hli]
- and a
- jr z, .asm_e598
- ld a, [wStageCollisionState]
- sla a
- ld c, a
- sla a
- add c
- ld c, a
- ld b, $0 ; bc = 6 * [wStageCollisionState]
- add hl, bc
-.asm_e598
- ld de, wStageCollisionMapPointer
- ld b, $6
-.asm_e59d
- ld a, [hli]
- ld [de], a
- inc de
- dec b
- jr nz, .asm_e59d
- call LoadCollisionAttributes
- ret
-
-StageCollisionAttributesPointers: ; 0xe5a7
- dw StageRedFieldTopCollisionAttributesPointers
- dw StageRedFieldBottomCollisionAttributesPointers
- dw StageUnusedCollisionAttributesPointers
- dw StageUnused2CollisionAttributesPointers
- dw StageBlueFieldTopCollisionAttributesPointers
- dw StageBlueFieldBottomCollisionAttributesPointers
- dw StageGengarBonusCollisionAttributesPointers
- dw StageGengarBonusCollisionAttributesPointers
- dw StageMewtwoBonusCollisionAttributesPointers
- dw StageMewtwoBonusCollisionAttributesPointers
- dw StageMeowthBonusCollisionAttributesPointers
- dw StageMeowthBonusCollisionAttributesPointers
- dw StageDiglettBonusCollisionAttributesPointers
- dw StageDiglettBonusCollisionAttributesPointers
- dw StageSeelBonusCollisionAttributesPointers
- dw StageSeelBonusCollisionAttributesPointers
-
-StageRedFieldTopCollisionAttributesPointers: ; 0xe5c7
- db $01 ; multiple pair entries
- dwb StageRedFieldTopCollisionAttributes0, Bank(StageRedFieldTopCollisionAttributes0)
- dwb StageRedFieldTopCollisionMasks0, Bank(StageRedFieldTopCollisionMasks0)
- dwb StageRedFieldTopCollisionAttributes1, Bank(StageRedFieldTopCollisionAttributes1)
- dwb StageRedFieldTopCollisionMasks0, Bank(StageRedFieldTopCollisionMasks0)
- dwb StageRedFieldTopCollisionAttributes2, Bank(StageRedFieldTopCollisionAttributes2)
- dwb StageRedFieldTopCollisionMasks1, Bank(StageRedFieldTopCollisionMasks1)
- dwb StageRedFieldTopCollisionAttributes3, Bank(StageRedFieldTopCollisionAttributes3)
- dwb StageRedFieldTopCollisionMasks1, Bank(StageRedFieldTopCollisionMasks1)
- dwb StageRedFieldTopCollisionAttributes4, Bank(StageRedFieldTopCollisionAttributes4)
- dwb StageRedFieldTopCollisionMasks2, Bank(StageRedFieldTopCollisionMasks2)
- dwb StageRedFieldTopCollisionAttributes5, Bank(StageRedFieldTopCollisionAttributes5)
- dwb StageRedFieldTopCollisionMasks2, Bank(StageRedFieldTopCollisionMasks2)
- dwb StageRedFieldTopCollisionAttributes6, Bank(StageRedFieldTopCollisionAttributes6)
- dwb StageRedFieldTopCollisionMasks3, Bank(StageRedFieldTopCollisionMasks3)
- dwb StageRedFieldTopCollisionAttributes7, Bank(StageRedFieldTopCollisionAttributes7)
- dwb StageRedFieldTopCollisionMasks3, Bank(StageRedFieldTopCollisionMasks3)
-
-StageRedFieldBottomCollisionAttributesPointers: ; 0xe5f8
- db $00 ; single pair entry
- dwb StageRedFieldBottomCollisionAttributes, Bank(StageRedFieldBottomCollisionAttributes)
- dwb StageRedFieldBottomCollisionMasks, Bank(StageRedFieldBottomCollisionMasks)
-
-StageUnusedCollisionAttributesPointers: ; 0xe5ff
-; This entry is never used
- db $00
-
-StageUnused2CollisionAttributesPointers: ; 0xe600
-; This entry is never used
- db $00
-
-StageBlueFieldTopCollisionAttributesPointers: ; 0xe601
- db $01 ; multiple pair entries
- dwb StageBlueFieldTopCollisionAttributesBallEntrance, Bank(StageBlueFieldTopCollisionAttributesBallEntrance)
- dwb StageBlueFieldTopCollisionMasks, Bank(StageBlueFieldTopCollisionMasks)
- dwb StageBlueFieldTopCollisionAttributes, Bank(StageBlueFieldTopCollisionAttributes)
- dwb StageBlueFieldTopCollisionMasks, Bank(StageBlueFieldTopCollisionMasks)
-
-StageBlueFieldBottomCollisionAttributesPointers: ; 0xe60e
- db $00 ; single pair entry
- dwb StageBlueFieldBottomCollisionAttributes, Bank(StageBlueFieldBottomCollisionAttributes)
- dwb StageBlueFieldBottomCollisionMasks, Bank(StageBlueFieldBottomCollisionMasks)
-
-StageGengarBonusCollisionAttributesPointers: ; 0xe615
- db $01 ; multiple pair entries
- dwb StageGengarBonusCollisionAttributesBallEntrance, Bank(StageGengarBonusCollisionAttributesBallEntrance)
- dwb StageGengarBonusCollisionMasks, Bank(StageGengarBonusCollisionMasks)
- dwb StageGengarBonusCollisionAttributes, Bank(StageGengarBonusCollisionAttributes)
- dwb StageGengarBonusCollisionMasks, Bank(StageGengarBonusCollisionMasks)
-
-StageMewtwoBonusCollisionAttributesPointers: ; 0xe622
- db $01 ; multiple pair entries
- dwb StageMewtwoBonusCollisionAttributesBallEntrance, Bank(StageMewtwoBonusCollisionAttributesBallEntrance)
- dwb StageMewtwoBonusCollisionMasks, Bank(StageMewtwoBonusCollisionMasks)
- dwb StageMewtwoBonusCollisionAttributes, Bank(StageMewtwoBonusCollisionAttributes)
- dwb StageMewtwoBonusCollisionMasks, Bank(StageMewtwoBonusCollisionMasks)
-
-StageMeowthBonusCollisionAttributesPointers: ; 0xe62f
- db $01 ; multiple pair entries
- dwb StageMeowthBonusCollisionAttributesBallEntrance, Bank(StageMeowthBonusCollisionAttributesBallEntrance)
- dwb StageMeowthBonusCollisionMasks, Bank(StageMeowthBonusCollisionMasks)
- dwb StageMeowthBonusCollisionAttributes, Bank(StageMeowthBonusCollisionAttributes)
- dwb StageMeowthBonusCollisionMasks, Bank(StageMeowthBonusCollisionMasks)
-
-StageDiglettBonusCollisionAttributesPointers: ; 0xe63c
- db $01 ; multiple pair entries
- dwb StageDiglettBonusCollisionAttributesBallEntrance, Bank(StageDiglettBonusCollisionAttributesBallEntrance)
- dwb StageDiglettBonusCollisionMasks, Bank(StageDiglettBonusCollisionMasks)
- dwb StageDiglettBonusCollisionAttributes, Bank(StageDiglettBonusCollisionAttributes)
- dwb StageDiglettBonusCollisionMasks, Bank(StageDiglettBonusCollisionMasks)
-
-StageSeelBonusCollisionAttributesPointers: ; 0xe649
- db $01 ; multiple pair entries
- dwb StageSeelBonusCollisionAttributesBallEntrance, Bank(StageSeelBonusCollisionAttributesBallEntrance)
- dwb StageSeelBonusCollisionMasks, Bank(StageSeelBonusCollisionMasks)
- dwb StageSeelBonusCollisionAttributes, Bank(StageSeelBonusCollisionAttributes)
- dwb StageSeelBonusCollisionMasks, Bank(StageSeelBonusCollisionMasks)
-
-LoadCollisionAttributes: ; 0xe656
-; Loads the stage's collision attributes into RAM
-; Input: [wStageCollisionMapPointer] = pointer to collision attributes map
-; [wStageCollisionMapBank] = ROM bank of collision attributes map
- ld hl, wStageCollisionMapPointer
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [wStageCollisionMapBank]
- ld de, wStageCollisionMap
- ld bc, $0300
- call FarCopyData
- ld hl, wStageCollisionMapPointer
- ld [hl], (wStageCollisionMap & $ff)
- inc hl
- ld [hl], (wStageCollisionMap >> 8)
- inc hl
- ld [hl], $0 ; Bank 0, because the data is in WRAM, so it doesn't matter which bank is saved
- ret
+INCLUDE "engine/pinball_game/stage_collision_attributes.asm"
FieldVerticalTransition: ; 0xe674
push af