diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-06-30 16:29:37 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-06-30 16:29:37 -0700 |
commit | 15e6fda64336da34d3dc4772d61509330073126f (patch) | |
tree | 55a4756a13fa734823ecc3dbb60bcdbac3aa9555 /engine | |
parent | 5bf01e71c492d9377ba72507e8cc514f46cb28e5 (diff) |
Move collision attributes routines into engine/pinball_game/stage_collision_attributes.asm
Diffstat (limited to 'engine')
-rwxr-xr-x | engine/pinball_game/stage_collision_attributes.asm | 149 |
1 files changed, 149 insertions, 0 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
|