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