diff --git a/Dungeons/attract_scenes.asm b/Dungeons/attract_scenes.asm new file mode 100644 index 0000000..2f801a6 --- /dev/null +++ b/Dungeons/attract_scenes.asm @@ -0,0 +1,1809 @@ +; Apart of Bank 0x0C +; Module14_Attract + + +; Attract_LoadNewScene +; #_0CEEEC: dw AttractScene_PolkaDots ; 0x00 +; #_0CEEEE: dw AttractScene_WorldMap ; 0x01 +; #_0CEEF0: dw AttractScene_ThroneRoom ; 0x02 +; #_0CEEF2: dw AttractScene_Prison ; 0x03 +; #_0CEEF4: dw AttractScene_AgahnimAltar ; 0x04 +; #_0CEEF6: dw AttractScene_EndOfStory ; 0x05 + +; ========================================================== + +LoadCommonSprites_long = $00E384 +Underworld_LoadAndDrawEntranceRoom = $02C533 +Underworld_SaveAndLoadLoadAllPalettes = $02C546 +AttractScene_AdvanceFromDungeon = $0CEFC0 +Underworld_LoadAllPalettes = $02C55E +PuppetSoldier = $1DEB84 +Attract_DrawPreloadedSprite = $0CF9B5 +SpritePrep_ResetProperties = $0DB871 +Attract_SetUpConclusionHDMA = $0ABC33 +Attract_DoTextInDungeonScene = $0CF766 +Attract_FadeInStep = $0CEEA6 +Attract_DrawZelda = $0CF9E8 +Attract_DrawKidnappedMaiden = $0CFA30 +HandleScreenFlash = $1DE9B6 +FadeMusicAndResetSRAMMirror = $0CC2F0 + +org $0CEF4E +AttractScene_ThroneRoom: +{ + #_0CEF4E: STZ.w $420C + #_0CEF51: STZ.b $9B + + #_0CEF53: LDA.b #$02 + #_0CEF55: STA.b $99 + + #_0CEF57: LDA.b #$20 + #_0CEF59: STA.b $9A + + #_0CEF5B: LDA.b #$0A + #_0CEF5D: STA.w $0AA4 + + #_0CEF60: JSL LoadCommonSprites_long + + #_0CEF64: REP #$20 + + #_0CEF66: LDA.b $20 + #_0CEF68: PHA + + #_0CEF69: LDA.b $22 + #_0CEF6B: PHA + + #_0CEF6C: SEP #$20 + + #_0CEF6E: LDA.b #$74 + #_0CEF70: JSL Underworld_LoadAndDrawEntranceRoom + + ; ------------------------------------------------------- + + #_0CEF74: REP #$20 + + #_0CEF76: PLA + #_0CEF77: STA.b $22 + + #_0CEF79: PLA + #_0CEF7A: STA.b $20 + + #_0CEF7C: SEP #$20 + + #_0CEF7E: STZ.w $0AB6 + #_0CEF81: STZ.w $0AAC + + #_0CEF84: LDA.b #$0E + #_0CEF86: STA.w $0AAD + + #_0CEF89: LDA.b #$03 + #_0CEF8B: STA.w $0AAE + + #_0CEF8E: LDX.b #$7E + #_0CEF90: LDA.b #$00 + #_0CEF92: JSL Underworld_SaveAndLoadLoadAllPalettes + + #_0CEF96: LDA.b #$00 ; RGB: #0008C0 + #_0CEF98: STA.l $7EC53A + + #_0CEF9C: LDA.b #$38 + #_0CEF9E: STA.l $7EC53B + + ; ------------------------------------------------------- + + #_0CEFA2: STZ.w $1CD8 + + #_0CEFA5: LDA.b #$13 ; MESSAGE 0113 + #_0CEFA7: STA.w $1CF0 + + #_0CEFAA: LDA.b #$01 + #_0CEFAC: STA.w $1CF1 + + #_0CEFAF: LDA.b #$02 + #_0CEFB1: STA.b $25 + + #_0CEFB3: LDA.b #$E0 + #_0CEFB5: STA.b $2C + + #_0CEFB7: REP #$20 + + #_0CEFB9: LDA.w #$0210 + #_0CEFBC: STA.b $64 + + #_0CEFBE: SEP #$20 +} +warnpc $0CEFC0 + +; ========================================================== + +org $0CEFE3 +AttractScene_Prison: +{ + #_0CEFE3: STZ.b $99 + #_0CEFE5: STZ.b $9A + + #_0CEFE7: REP #$20 + + #_0CEFE9: LDA.b $20 + #_0CEFEB: PHA + + #_0CEFEC: LDA.b $22 + #_0CEFEE: PHA + + #_0CEFEF: SEP #$20 + + #_0CEFF1: LDA.b #$73 + #_0CEFF3: JSL Underworld_LoadAndDrawEntranceRoom + + #_0CEFF7: REP #$20 + + #_0CEFF9: PLA + #_0CEFFA: STA.b $22 + + #_0CEFFC: PLA + #_0CEFFD: STA.b $20 + + #_0CEFFF: SEP #$20 + + #_0CF001: LDA.b #$02 + #_0CF003: STA.w $0AB6 + #_0CF006: STZ.w $0AAC + + #_0CF009: LDA.b #$0E + #_0CF00B: STA.w $0AAD + + #_0CF00E: LDA.b #$03 + #_0CF010: STA.w $0AAE + + #_0CF013: LDX.b #$7F + #_0CF015: LDA.b #$01 + + #_0CF017: JSL Underworld_SaveAndLoadLoadAllPalettes + + #_0CF01B: LDA.b #$00 ; RGB: #000070 + #_0CF01D: STA.l $7EC53A + + #_0CF021: LDA.b #$38 + #_0CF023: STA.l $7EC53B + + ; ------------------------------------------------------- + + #_0CF027: STZ.w $1CD8 + + #_0CF02A: LDA.b #$14 ; MESSAGE 0114 + #_0CF02C: STA.w $1CF0 + + #_0CF02F: LDA.b #$01 + #_0CF031: STA.w $1CF1 + + #_0CF034: LDA.b #$94 + #_0CF036: STA.b $2B + + #_0CF038: LDA.b #$68 + #_0CF03A: STA.b $30 + + #_0CF03C: STZ.b $31 + #_0CF03E: STZ.b $32 + #_0CF040: STZ.b $33 + + #_0CF042: STZ.b $40 + #_0CF044: STZ.b $50 + #_0CF046: STZ.b $5F + + #_0CF048: LDA.b #$FF + #_0CF04A: STA.b $25 + + #_0CF04C: REP #$20 + + #_0CF04E: LDA.w #$0240 + #_0CF051: STA.b $64 + + #_0CF053: SEP #$20 + + #_0CF055: JMP AttractScene_AdvanceFromDungeon +} + +; ========================================================== + +org $0CF058 +AttractScene_AgahnimAltar: +{ + #_0CF058: REP #$20 + + #_0CF05A: LDA.b $20 + #_0CF05C: PHA + + #_0CF05D: LDA.b $22 + #_0CF05F: PHA + + #_0CF060: SEP #$20 + + #_0CF062: LDA.b #$75 + #_0CF064: JSL Underworld_LoadAndDrawEntranceRoom + + #_0CF068: REP #$20 + + #_0CF06A: PLA + #_0CF06B: STA.b $22 + + #_0CF06D: PLA + #_0CF06E: STA.b $20 + + #_0CF070: SEP #$20 + + #_0CF072: STZ.w $0AB6 + #_0CF075: STZ.w $0AAC + + #_0CF078: LDA.b #$0E + #_0CF07A: STA.w $0AAD + + #_0CF07D: LDA.b #$03 + #_0CF07F: STA.w $0AAE + #_0CF082: STZ.w $0AA9 + + #_0CF085: JSL Underworld_LoadAllPalettes + + #_0CF089: LDX.b #$7F + #_0CF08B: LDA.b #$02 + #_0CF08D: JSL Underworld_SaveAndLoadLoadAllPalettes + + #_0CF091: LDA.b #$00 ; RGB: #0008C0 + #_0CF093: STA.l $7EC33A + #_0CF097: STA.l $7EC53A + + #_0CF09B: LDA.b #$38 + #_0CF09D: STA.l $7EC33B + #_0CF0A1: STA.l $7EC53B + + ; ------------------------------------------------------- + + #_0CF0A5: STZ.w $1CD8 + + #_0CF0A8: LDA.b #$15 ; MESSAGE 0115 + #_0CF0AA: STA.w $1CF0 + + #_0CF0AD: LDA.b #$01 + #_0CF0AF: STA.w $1CF1 + + #_0CF0B2: LDA.b #$FF + #_0CF0B4: STA.b $25 + + #_0CF0B6: LDA.b #$70 + #_0CF0B8: STA.b $30 + #_0CF0BA: STA.b $62 + + #_0CF0BC: LDA.b #$70 + #_0CF0BE: STA.b $63 + + #_0CF0C0: LDA.b #$08 + #_0CF0C2: STA.b $32 + + #_0CF0C4: STZ.b $50 + #_0CF0C6: STZ.b $51 + #_0CF0C8: STZ.b $52 + + #_0CF0CA: STZ.b $5F + #_0CF0CC: STZ.b $60 + #_0CF0CE: STZ.b $61 + + #_0CF0D0: REP #$20 + + #_0CF0D2: LDA.w #$00C0 + #_0CF0D5: STA.b $64 + + #_0CF0D7: SEP #$20 + + #_0CF0D9: JMP AttractScene_AdvanceFromDungeon +} + +; ========================================================== + +org $0CF0DC +AttractScene_EndOfStory: +{ + #_0CF0DC: REP #$20 + + #_0CF0DE: JSL Attract_SetUpConclusionHDMA +} + + +; ========================================================== + +; Attract_EnactStory: +; #_0CF11C: dw AttractDramatize_PolkaDots ; 0x00 +; #_0CF11E: dw AttractDramatize_WorldMap ; 0x01 +; #_0CF120: dw AttractDramatize_ThroneRoom ; 0x02 +; #_0CF122: dw AttractDramatize_Prison ; 0x03 +; #_0CF124: dw AttractDramatize_AgahnimAltar ; 0x04 + +; ========================================================== + +org $0CF1AE +pool_AttractDramatize_ThroneRoom: +{ +.pointer_size + #_0CF1AE: dw AttractOAMData_king_size + #_0CF1B0: dw AttractOAMData_mantle_size + +.pointer_offset_x + #_0CF1B2: dw AttractOAMData_king_offset_x + #_0CF1B4: dw AttractOAMData_mantle_offset_x + +.pointer_offset_y + #_0CF1B6: dw AttractOAMData_king_offset_y + #_0CF1B8: dw AttractOAMData_mantle_offset_y + +.pointer_char + #_0CF1BA: dw AttractOAMData_king_char + #_0CF1BC: dw AttractOAMData_mantle_char + +.pointer_prop + #_0CF1BE: dw AttractOAMData_king_prop + #_0CF1C0: dw AttractOAMData_mantle_prop + + ; ------------------------------------------------------- + +.offset_x + #_0CF1C2: db $50 ; king + #_0CF1C3: db $68 ; mantle + +.offset_y + #_0CF1C4: db $58 ; king + #_0CF1C5: db $20 ; mantle + + ; ------------------------------------------------------- + +.oam_count + #_0CF1C6: db $03 ; king + #_0CF1C7: db $05 ; mantle +} + + +; ========================================================== + +org $0CF1C8 +AttractDramatize_ThroneRoom: +{ + #_0CF1C8: STZ.b $2A + + #_0CF1CA: LDA.b $52 + #_0CF1CC: BNE .continue + + #_0CF1CE: LDA.b $13 + #_0CF1D0: CMP.b #$0F + #_0CF1D2: BEQ .max_brightness + + #_0CF1D4: INC.b $13 + + #_0CF1D6: BRA .continue + + .max_brightness + #_0CF1D8: INC.b $52 + + ; ------------------------------------------------------- + + .continue + #_0CF1DA: REP #$20 + + #_0CF1DC: LDA.w $0122 + #_0CF1DF: BNE .scroll_screen + + #_0CF1E1: SEP #$20 + + #_0CF1E3: JSR Attract_DoTextInDungeonScene + + #_0CF1E6: REP #$20 + + #_0CF1E8: LDA.b $64 + + #_0CF1EA: SEP #$20 + + #_0CF1EC: BNE .continue_dramatization + + #_0CF1EE: LDA.b $2C + #_0CF1F0: CMP.b #$1F + #_0CF1F2: BCS .dont_fade_out + + #_0CF1F4: AND.b #$01 + #_0CF1F6: BNE .dont_fade_out + + #_0CF1F8: DEC.b $13 + + .dont_fade_out + #_0CF1FA: DEC.b $2C + #_0CF1FC: BNE .continue_dramatization + + #_0CF1FE: INC.b $23 + #_0CF200: INC.b $22 + + #_0CF202: RTL + + ; ------------------------------------------------------- + + .scroll_screen + #_0CF203: DEC.w $0122 + #_0CF206: DEC.w $0124 + + ; ------------------------------------------------------- + + .continue_dramatization + #_0CF209: SEP #$20 + + #_0CF20B: LDX.b #$02 + + .next_entity + #_0CF20D: PHX + + #_0CF20E: REP #$20 + + #_0CF210: LDA.l pool_AttractDramatize_ThroneRoom_pointer_size,X + #_0CF214: STA.b $2D + + #_0CF216: LDA.l pool_AttractDramatize_ThroneRoom_pointer_offset_x,X + #_0CF21A: STA.b $02 + + #_0CF21C: LDA.l pool_AttractDramatize_ThroneRoom_pointer_offset_y,X + #_0CF220: STA.b $04 + + #_0CF222: LDA.l pool_AttractDramatize_ThroneRoom_pointer_char,X + #_0CF226: STA.b $06 + + #_0CF228: LDA.l pool_AttractDramatize_ThroneRoom_pointer_prop,X + #_0CF22C: STA.b $08 + + #_0CF22E: TXA + #_0CF22F: AND.w #$00FF + #_0CF232: LSR A + #_0CF233: TAX + + #_0CF234: LDA.l pool_AttractDramatize_ThroneRoom_offset_y,X + #_0CF238: AND.w #$00FF + #_0CF23B: SEC + #_0CF23C: SBC.w $0122 + #_0CF23F: STA.b $00 + + #_0CF241: CMP.w #$FFE0 + + #_0CF244: SEP #$20 + #_0CF246: BMI .off_screen + + #_0CF248: LDA.l pool_AttractDramatize_ThroneRoom_offset_x,X + #_0CF24C: STA.b $28 + + #_0CF24E: LDA.b $00 + #_0CF250: STA.b $29 + + #_0CF252: LDA.l pool_AttractDramatize_ThroneRoom_oam_count,X + #_0CF256: TAY + + #_0CF257: JSR Attract_DrawPreloadedSprite + + .off_screen + #_0CF25A: PLX + + #_0CF25B: DEX + #_0CF25C: DEX + #_0CF25D: BPL .next_entity + + #_0CF25F: RTL +} + +; ========================================================== + +org $0CF260 +pool_AttractDramatize_Prison: +{ + .soldier_offset_x + #_0CF260: dw 32, -12 + + .soldier_offset_y + #_0CF264: db 24, 24 + + .soldier_direction + #_0CF266: db $01, $01 + + .soldier_palette + #_0CF268: db $09, $07 + + .maiden_jab_offset_x + #_0CF26A: db 0, 1, 2, 3 + #_0CF26E: db 4, 5, 5, 5 + #_0CF272: db 4, 4, 3, 3 + #_0CF276: db 2, 2, 1, 1 +} + +org $0CF27A +AttractDramatize_Prison: +{ + #_0CF27A: STZ.b $2A + + #_0CF27C: LDA.b $5F + #_0CF27E: BNE .skip_fade + + #_0CF280: JSR Attract_FadeInStep + + .skip_fade + #_0CF283: LDA.b #$38 + #_0CF285: STA.b $28 + + #_0CF287: JSR Attract_DrawZelda + + #_0CF28A: LDA.b $25 + #_0CF28C: CMP.b #$C0 + #_0CF28E: BCS .delay_agahnim + + #_0CF290: JMP.w AttractDramatize_Agahnim + + .delay_agahnim + #_0CF293: LDA.b #$70 + #_0CF295: STA.b $29 + + #_0CF297: DEC.b $50 + #_0CF299: BPL .dont_reset_jab + + #_0CF29B: LDA.b #$0F + #_0CF29D: STA.b $50 + + .dont_reset_jab + #_0CF29F: LDX.b $50 + + #_0CF2A1: LDA.b $31 + #_0CF2A3: STA.b $40 + + #_0CF2A5: LDA.b $30 + #_0CF2A7: CLC + #_0CF2A8: ADC.l pool_AttractDramatize_Prison_maiden_jab_offset_x,X + #_0CF2AC: STA.b $28 + + #_0CF2AE: BCC .dont_disable_maiden + + #_0CF2B0: INC.b $40 + + .dont_disable_maiden + #_0CF2B2: JSR Attract_DrawKidnappedMaiden + + ; ------------------------------------------------------- + + #_0CF2B5: LDX.b #$01 + + .next_soldier + #_0CF2B7: STZ.b $03 + + #_0CF2B9: LDA.b $33 + #_0CF2BB: STA.b $06 + + #_0CF2BD: LDA.b $29 + #_0CF2BF: CLC + #_0CF2C0: ADC.l pool_AttractDramatize_Prison_soldier_offset_y,X + #_0CF2C4: STA.b $02 + + #_0CF2C6: LDA.l pool_AttractDramatize_Prison_soldier_direction,X + #_0CF2CA: STA.b $04 + + #_0CF2CC: LDA.l pool_AttractDramatize_Prison_soldier_palette,X + #_0CF2D0: STA.b $05 + + #_0CF2D2: PHX + + #_0CF2D3: REP #$20 + + #_0CF2D5: TXA + #_0CF2D6: ASL A + #_0CF2D7: TAX + + #_0CF2D8: LDA.b $30 + #_0CF2DA: CLC + #_0CF2DB: ADC.w #$0100 + + #_0CF2DE: CLC + #_0CF2DF: ADC.l pool_AttractDramatize_Prison_soldier_offset_x,X + #_0CF2E3: STA.b $00 + + #_0CF2E5: TAY + #_0CF2E6: STY.b $34 + + #_0CF2E8: SEP #$20 + + #_0CF2EA: JSL SpritePrep_ResetProperties + #_0CF2EE: JSL PuppetSoldier + + #_0CF2F2: PLX + #_0CF2F3: DEX + #_0CF2F4: BPL .next_soldier + + ; ------------------------------------------------------- + + #_0CF2F6: INC.b $32 + + #_0CF2F8: LDA.b $32 + #_0CF2FA: AND.b #$07 + #_0CF2FC: BNE AttractDramatize_Agahnim + + #_0CF2FE: LDY.b #$FF + + #_0CF300: LDA.b $33 + #_0CF302: CMP.b #$02 + #_0CF304: BNE .delay_sfx + + #_0CF306: STY.b $33 + + #_0CF308: LDA.b $31 + #_0CF30A: BNE .delay_sfx + + #_0CF30C: LDA.b $32 + #_0CF30E: AND.b #$08 + #_0CF310: BEQ .delay_sfx + + #_0CF312: LDA.b #$04 ; SFX3.04 + #_0CF314: STA.w $012F + + .delay_sfx + #_0CF317: INC.b $33 +} + +; ========================================================== + +org $0CF319 +AttractDramatize_Agahnim: +{ + #_0CF319: LDA.b $60 + #_0CF31B: ASL A + #_0CF31C: TAX + + #_0CF31D: JMP.w (.vectors,X) + + .vectors + #_0CF320: dw Dramaghanim_WaitForCue + #_0CF322: dw Dramaghanim_MoveAndSpin + + ; ========================================================== + + Dramaghanim_AdvanceStory: + #_0CF324: INC.b $23 + + #_0CF326: DEC.b $22 + #_0CF328: DEC.b $22 + + #_0CF32A: RTL + + ; ========================================================== + + Dramaghanim_WaitForCue: + #_0CF32B: LDA.b $34 + #_0CF32D: BNE .delay + + #_0CF32F: INC.b $60 + + .delay + #_0CF331: REP #$20 + + #_0CF333: LDA.b $1A + #_0CF335: AND.w #$0001 + #_0CF338: BEQ .delay_tick + + #_0CF33A: DEC.b $30 + + .delay_tick + #_0CF33C: LDA.w #AttractAgahnimOAM_size + #_0CF33F: STA.b $2D + + #_0CF341: LDA.w #AttractAgahnimOAM_offset_x + #_0CF344: STA.b $02 + + #_0CF346: LDA.w #AttractAgahnimOAM_offset_y + #_0CF349: STA.b $04 + + #_0CF34B: LDA.w #AttractAgahnimOAM_char_step0 + #_0CF34E: STA.b $06 + + #_0CF350: LDA.w #AttractAgahnimOAM_prop_step0 + #_0CF353: STA.b $08 + + #_0CF355: SEP #$20 + + #_0CF357: LDA.b #$58 + #_0CF359: STA.b $28 + + #_0CF35B: LDA.b $2B + #_0CF35D: STA.b $29 + + #_0CF35F: LDY.b #$05 + #_0CF361: JSR Attract_DrawPreloadedSprite + + #_0CF364: RTL +} + +; ========================================================== + +org $0CF365 +pool_Dramaghanim_MoveAndSpin: +{ + .pointers_char + #_0CF365: dw AttractAgahnimOAM_char_step0 + #_0CF367: dw AttractAgahnimOAM_char_step1 + #_0CF369: dw AttractAgahnimOAM_char_step2 + #_0CF36B: dw AttractAgahnimOAM_char_step3 + #_0CF36D: dw AttractAgahnimOAM_char_step4 + + .pointers_prop + #_0CF36F: dw AttractAgahnimOAM_prop_step0 + #_0CF371: dw AttractAgahnimOAM_prop_step1 + #_0CF373: dw AttractAgahnimOAM_prop_step2 + #_0CF375: dw AttractAgahnimOAM_prop_step0 + #_0CF377: dw AttractAgahnimOAM_prop_step0 +} + + +org $0CF379 +Dramaghanim_MoveAndSpin: +{ + #_0CF379: LDA.b $25 + #_0CF37B: CMP.b #$80 + #_0CF37D: BCS .continue + + #_0CF37F: JSR Attract_DoTextInDungeonScene + + #_0CF382: REP #$20 + + #_0CF384: LDA.b $64 + + #_0CF386: SEP #$20 + + #_0CF388: BEQ .continue + + #_0CF38A: LDX.b #$08 + #_0CF38C: BRA .animate_agahnim + + .continue + #_0CF38E: LDX.b #$00 + + #_0CF390: LDA.b $2B + #_0CF392: CMP.b #$6E + #_0CF394: BEQ .timer_maxed + + #_0CF396: DEC.b $2B + #_0CF398: BRA .animate_agahnim + + .timer_maxed + #_0CF39A: LDA.b $25 + #_0CF39C: CMP.b #$1F + #_0CF39E: BCS .delay_fade + + #_0CF3A0: AND.b #$01 + #_0CF3A2: BNE .delay_fade + + #_0CF3A4: DEC.b $13 + + .delay_fade + #_0CF3A6: DEC.b $25 + #_0CF3A8: BNE .dont_advance_story + + #_0CF3AA: JMP.w Dramaghanim_AdvanceStory + + ; ------------------------------------------------------- + + .dont_advance_story + #_0CF3AD: LDA.b $25 + #_0CF3AF: CMP.b #$C0 + #_0CF3B1: BCS .animate_agahnim + + #_0CF3B3: INX + #_0CF3B4: INX + + #_0CF3B5: CMP.b #$B8 + #_0CF3B7: BCS .animate_agahnim + + #_0CF3B9: INX + #_0CF3BA: INX + + #_0CF3BB: CMP.b #$B0 + #_0CF3BD: BCS .animate_agahnim + + #_0CF3BF: INX + #_0CF3C0: INX + + #_0CF3C1: CMP.b #$A0 + #_0CF3C3: BCS .animate_agahnim + + #_0CF3C5: INX + #_0CF3C6: INX + + ; ------------------------------------------------------- + + .animate_agahnim + #_0CF3C7: LDA.b #$A8 + #_0CF3C9: STA.b $28 + + #_0CF3CB: REP #$20 + + #_0CF3CD: LDA.b $1A + #_0CF3CF: AND.w #$0001 + #_0CF3D2: BEQ .delay_tick + + #_0CF3D4: DEC.b $30 + + .delay_tick + #_0CF3D6: LDA.w #AttractAgahnimOAM_size + #_0CF3D9: STA.b $2D + + #_0CF3DB: LDA.w #AttractAgahnimOAM_offset_x + #_0CF3DE: STA.b $02 + + #_0CF3E0: LDA.w #AttractAgahnimOAM_offset_y + #_0CF3E3: STA.b $04 + + #_0CF3E5: LDA.l pool_Dramaghanim_MoveAndSpin_pointers_char,X + #_0CF3E9: STA.b $06 + + #_0CF3EB: LDA.l pool_Dramaghanim_MoveAndSpin_pointers_prop,X + #_0CF3EF: STA.b $08 + + #_0CF3F1: SEP #$20 + + #_0CF3F3: LDA.b #$58 + #_0CF3F5: STA.b $28 + + #_0CF3F7: LDA.b $2B + #_0CF3F9: STA.b $29 + + #_0CF3FB: LDY.b #$05 + #_0CF3FD: JSR Attract_DrawPreloadedSprite + + #_0CF400: RTL +} + +; ========================================================== + +org $0CF401 +pool_AttractDramatize_AgahnimAltar: +{ + .soldier_position_x + #_0CF401: db $30, $C0, $30, $C0, $50, $A0 + + .soldier_position_y + #_0CF407: db $70, $70, $98, $98, $C0, $C0 + + .soldier_direction + #_0CF40D: db $00, $01, $00, $01, $03, $03 + + .soldier_palette + #_0CF413: db $09, $09, $09, $09, $07, $09 + + ; ------------------------------------------------------- + + .vectors + #_0CF419: dw Dramagahnim_RaiseTheRoof + #_0CF41B: dw Dramagahnim_ReadySpell + #_0CF41D: dw Dramagahnim_CastSpell + #_0CF41F: dw Dramagahnim_RealizeWhatJustHappened + #_0CF421: dw Dramagahnim_IdleGuiltily +} + + ; ------------------------------------------------------- + +AttractDramatize_AgahnimAltar: +{ + #_0CF423: LDA.b $5D + #_0CF425: BEQ .delay + + #_0CF427: JMP.w Dramaghanim_AdvanceStory + + .delay + #_0CF42A: STZ.b $2A + + #_0CF42C: JSL HandleScreenFlash + + #_0CF430: LDA.b $5F + #_0CF432: BNE .delay_fade + + #_0CF434: JSR Attract_FadeInStep + + .delay_fade + #_0CF437: LDA.b $50 + #_0CF439: CMP.b #$FF + #_0CF43B: BEQ .delay_tick + + #_0CF43D: INC.b $50 + + .delay_tick + #_0CF43F: LDA.w $0FF9 + #_0CF442: BEQ .delay_sfx + + #_0CF444: AND.b #$04 + #_0CF446: BEQ .delay_sfx + + #_0CF448: LDX.b #$2B ; SFX3.2B + #_0CF44A: STX.w $012F + + ; ------------------------------------------------------- + + .delay_sfx + #_0CF44D: LDA.b $60 + #_0CF44F: ASL A + #_0CF450: TAX + + #_0CF451: JSR (pool_AttractDramatize_AgahnimAltar_vectors,X) + + ; ------------------------------------------------------- + + #_0CF454: LDX.b #$05 + + .next_soldier + #_0CF456: STZ.b $01 + #_0CF458: STZ.b $03 + #_0CF45A: STZ.b $06 + + #_0CF45C: LDA.l pool_AttractDramatize_AgahnimAltar_soldier_position_x,X + #_0CF460: STA.b $00 + + #_0CF462: LDA.l pool_AttractDramatize_AgahnimAltar_soldier_position_y,X + #_0CF466: STA.b $02 + + #_0CF468: LDA.l pool_AttractDramatize_AgahnimAltar_soldier_direction,X + #_0CF46C: STA.b $04 + + #_0CF46E: LDA.l pool_AttractDramatize_AgahnimAltar_soldier_palette,X + #_0CF472: STA.b $05 + + #_0CF474: PHX + + #_0CF475: JSL SpritePrep_ResetProperties + #_0CF479: JSL PuppetSoldier + + #_0CF47D: PLX + #_0CF47E: DEX + #_0CF47F: BPL .next_soldier + + ; ------------------------------------------------------- + + #_0CF481: LDX.b $50 + #_0CF483: CPX.b #$A0 + #_0CF485: BCC .continue + + #_0CF487: LDA.b $30 + #_0CF489: CMP.b #$60 + #_0CF48B: BEQ .tick_timer + + #_0CF48D: DEC.b $32 + #_0CF48F: BNE .continue + + #_0CF491: DEC.b $30 + + #_0CF493: LDA.b #$08 + #_0CF495: STA.b $32 + + #_0CF497: BRA .continue + + .tick_timer + #_0CF499: INC.b $61 + + ; ------------------------------------------------------- + + .continue + #_0CF49B: LDA.b $52 + #_0CF49D: BNE .dont_draw_maiden + + #_0CF49F: REP #$20 + + #_0CF4A1: LDA.w #AttractAltarMaidenOAM_size + #_0CF4A4: STA.b $2D + + #_0CF4A6: LDA.w #AttractAltarMaidenOAM_offset_x + #_0CF4A9: STA.b $02 + + #_0CF4AB: LDA.w #AttractAltarMaidenOAM_offset_y + #_0CF4AE: STA.b $04 + + #_0CF4B0: LDX.b #$00 + + #_0CF4B2: LDA.b $30 + #_0CF4B4: AND.w #$00FF + #_0CF4B7: CMP.w #$0070 + #_0CF4BA: BEQ .not_airborne + + #_0CF4BC: INX + #_0CF4BD: INX + + .not_airborne + #_0CF4BE: LDA.l .maiden_char_pointer,X + #_0CF4C2: STA.b $06 + + #_0CF4C4: LDA.w #AttractAltarMaidenOAM_prop + #_0CF4C7: STA.b $08 + + #_0CF4C9: SEP #$20 + + #_0CF4CB: LDA.b #$74 + #_0CF4CD: STA.b $28 + + #_0CF4CF: LDA.b $30 + #_0CF4D1: STA.b $29 + + #_0CF4D3: LDY.b #$01 + #_0CF4D5: JSR Attract_DrawPreloadedSprite + + ; ------------------------------------------------------- + + #_0CF4D8: LDX.b #$0E + + #_0CF4DA: LDA.b $30 + #_0CF4DC: CMP.b #$68 + #_0CF4DE: BCS .adjust_shadow_index + + #_0CF4E0: SEC + #_0CF4E1: SBC.b #$68 + + #_0CF4E3: ASL A + #_0CF4E4: AND.b #$0E + #_0CF4E6: TAX + + .adjust_shadow_index + #_0CF4E7: REP #$20 + + #_0CF4E9: LDA.w #AttractAltarMaidenShadowOAM_size + #_0CF4EC: STA.b $2D + + #_0CF4EE: LDA.l .shadow_offset_x_pointer,X + #_0CF4F2: STA.b $02 + + #_0CF4F4: LDA.w #AttractAltarMaidenShadowOAM_offset_y + #_0CF4F7: STA.b $04 + + #_0CF4F9: LDA.w #AttractAltarMaidenShadowOAM_char + #_0CF4FC: STA.b $06 + + #_0CF4FE: LDA.w #AttractAltarMaidenShadowOAM_prop + #_0CF501: STA.b $08 + + #_0CF503: SEP #$20 + + #_0CF505: TXA + #_0CF506: LSR A + #_0CF507: TAX + + #_0CF508: LDA.b #$74 + #_0CF50A: CLC + #_0CF50B: ADC.l .shadow_base_offset_x,X + #_0CF50F: STA.b $28 + + #_0CF511: LDA.b #$76 + #_0CF513: STA.b $29 + + #_0CF515: LDY.b #$01 + #_0CF517: JSR Attract_DrawPreloadedSprite + + ; ------------------------------------------------------- + + .dont_draw_maiden + #_0CF51A: LDA.b $50 + + #_0CF51C: LSR A + #_0CF51D: LSR A + #_0CF51E: LSR A + #_0CF51F: LSR A + + #_0CF520: AND.b #$0E + #_0CF522: TAX + + #_0CF523: REP #$20 + + #_0CF525: LDA.w #AttractAgahnimOAM_size + #_0CF528: STA.b $2D + + #_0CF52A: LDA.w #AttractAgahnimOAM_offset_x + #_0CF52D: STA.b $02 + + #_0CF52F: LDA.w #AttractAgahnimOAM_offset_y + #_0CF532: STA.b $04 + + #_0CF534: LDA.l .agahnim_char_pointer,X + #_0CF538: STA.b $06 + + #_0CF53A: LDA.w #AttractAgahnimOAM_prop_step0 + #_0CF53D: STA.b $08 + + #_0CF53F: SEP #$20 + + #_0CF541: LDA.b #$70 + #_0CF543: STA.b $28 + + #_0CF545: LDA.b #$46 + #_0CF547: STA.b $29 + + #_0CF549: LDY.b #$05 + #_0CF54B: JSR Attract_DrawPreloadedSprite + + #_0CF54E: RTL + + + ; ------------------------------------------------------- + + .shadow_offset_x_pointer + #_0CF54F: dw AttractAltarMaidenShadowOAM_offset_x_step0 + #_0CF551: dw AttractAltarMaidenShadowOAM_offset_x_step0 + #_0CF553: dw AttractAltarMaidenShadowOAM_offset_x_step1 + #_0CF555: dw AttractAltarMaidenShadowOAM_offset_x_step1 + #_0CF557: dw AttractAltarMaidenShadowOAM_offset_x_step2 + #_0CF559: dw AttractAltarMaidenShadowOAM_offset_x_step2 + #_0CF55B: dw AttractAltarMaidenShadowOAM_offset_x_step3 + #_0CF55D: dw AttractAltarMaidenShadowOAM_offset_x_step4 + + ; ------------------------------------------------------- + + .shadow_base_offset_x + #_0CF55F: db 4, 4, 3, 3 + #_0CF563: db 2, 2, 1, 0 + + ; ------------------------------------------------------- + + .maiden_char_pointer + #_0CF567: dw AttractAltarMaidenOAM_char_step0 + #_0CF569: dw AttractAltarMaidenOAM_char_step1 + + ; ------------------------------------------------------- + + .agahnim_char_pointer + #_0CF56B: dw AttractAgahnimOAM_char_step3 + #_0CF56D: dw AttractAgahnimOAM_char_step5 + #_0CF56F: dw AttractAgahnimOAM_char_step3 + #_0CF571: dw AttractAgahnimOAM_char_step6 + #_0CF573: dw AttractAgahnimOAM_char_step3 + #_0CF575: dw AttractAgahnimOAM_char_step5 + #_0CF577: dw AttractAgahnimOAM_char_step3 + #_0CF579: dw AttractAgahnimOAM_char_step4 +} + +; ========================================================== + +org $0CF57B +Dramagahnim_RaiseTheRoof: +{ + #_0CF57B: LDA.b $61 + #_0CF57D: BEQ .exit + + #_0CF57F: INC.b $60 + + .exit + #_0CF581: RTS +} + +; ========================================================== + +org $0CF582 +DramagahnimSpellCharPointer: + #_0CF582: dw DramagahnimSpellOAM_char_step0 + #_0CF584: dw DramagahnimSpellOAM_char_step1 + + ; ------------------------------------------------------- + +DramagahnimSpellPropPointer: + #_0CF586: dw DramagahnimSpellOAM_prop_step0 + #_0CF588: dw DramagahnimSpellOAM_prop_step1 + + ; ------------------------------------------------------- + +pool_Dramagahnim_ReadySpell: +{ +.oam_count + #_0CF58A: db 1 + #_0CF58B: db 1 + #_0CF58C: db 1 + #_0CF58D: db 5 + #_0CF58E: db 5 + #_0CF58F: db 9 + #_0CF590: db 9 + #_0CF591: db 13 +} + +; ------------------------------------------------------- + +org $0CF592 +Dramagahnim_ReadySpell: + #_0CF592: LDA.b $1A + #_0CF594: LSR A + #_0CF595: AND.b #$02 + #_0CF597: TAX + + #_0CF598: REP #$20 + + #_0CF59A: LDA.w #DramagahnimSpellOAM_size + #_0CF59D: STA.b $2D + + #_0CF59F: LDA.w #DramagahnimSpellOAM_offset_x + #_0CF5A2: STA.b $02 + + #_0CF5A4: LDA.w #DramagahnimSpellOAM_offset_y + #_0CF5A7: STA.b $04 + + #_0CF5A9: LDA.l DramagahnimSpellCharPointer,X + #_0CF5AD: STA.b $06 + + #_0CF5AF: LDA.l DramagahnimSpellPropPointer,X + #_0CF5B3: STA.b $08 + + ; ------------------------------------------------------- + + #_0CF5B5: SEP #$20 + + #_0CF5B7: LDA.b #$6E + #_0CF5B9: STA.b $28 + + #_0CF5BB: LDA.b #$48 + #_0CF5BD: STA.b $29 + + #_0CF5BF: LDA.b $51 + #_0CF5C1: LSR A + #_0CF5C2: AND.b #$07 + #_0CF5C4: TAX + + #_0CF5C5: LDA.l pool_Dramagahnim_ReadySpell_oam_count,X + #_0CF5C9: TAY + + #_0CF5CA: JSR Attract_DrawPreloadedSprite + + ; ------------------------------------------------------- + + #_0CF5CD: LDA.b $51 + #_0CF5CF: BNE .delay_sfx + + #_0CF5D1: LDY.b $63 + #_0CF5D3: CPY.b #$70 + #_0CF5D5: BNE .delay_sfx + + #_0CF5D7: LDX.b #$27 ; SFX3.27 + #_0CF5D9: STX.w $012F + + ; ------------------------------------------------------- + +.delay_sfx + #_0CF5DC: CMP.b #$0F + #_0CF5DE: BEQ .advance + + #_0CF5E0: CMP.b #$06 + #_0CF5E2: BNE .delay_other_sfx + + #_0CF5E4: LDX.b #$90 + #_0CF5E6: STX.w $0FF9 + + #_0CF5E9: LDX.b #$2B ; SFX3.2B + #_0CF5EB: STX.w $012F + + ; ------------------------------------------------------- + +.delay_other_sfx + #_0CF5EE: LDA.b $63 + #_0CF5F0: BEQ .delay_tick + + #_0CF5F2: DEC.b $63 + + #_0CF5F4: RTS + + ; ------------------------------------------------------- + +.delay_tick + #_0CF5F5: INC.b $51 + + #_0CF5F7: RTS + + ; ------------------------------------------------------- + +.advance + #_0CF5F8: INC.b $60 + + #_0CF5FA: RTS + +; ========================================================== + +org $0CF5FB +pool_Dramagahnim_CastSpell: +{ + .oam_count + #_0CF5FB: db 3 + #_0CF5FC: db 3 + #_0CF5FD: db 7 + #_0CF5FE: db 7 + #_0CF5FF: db 11 + #_0CF600: db 11 + #_0CF601: db 13 + #_0CF602: db 13 + + ; ------------------------------------------------------- + + .index_offset + #_0CF603: dw 10 + #_0CF605: dw 10 + #_0CF607: dw 6 + #_0CF609: dw 6 + #_0CF60B: dw 2 + #_0CF60D: dw 2 + #_0CF60F: dw 0 + #_0CF611: dw 0 +} + + + ; ------------------------------------------------------- + +Dramagahnim_CastSpell: +{ + #_0CF613: PHB + #_0CF614: PHK + #_0CF615: PLB + + #_0CF616: LDA.b $1A + #_0CF618: LSR A + #_0CF619: AND.b #$02 + #_0CF61B: TAX + + #_0CF61C: LDA.b $51 + #_0CF61E: LSR A + #_0CF61F: AND.b #$07 + #_0CF621: STA.b $00 + + #_0CF623: ASL A + #_0CF624: TAY + + ; ------------------------------------------------------- + + #_0CF625: REP #$20 + + #_0CF627: LDA.w #DramagahnimSpellOAM_size + #_0CF62A: CLC + #_0CF62B: ADC.w pool_Dramagahnim_CastSpell_index_offset,Y + #_0CF62E: STA.b $2D + + #_0CF630: LDA.w #DramagahnimSpellOAM_offset_x + #_0CF633: CLC + #_0CF634: ADC.w pool_Dramagahnim_CastSpell_index_offset,Y + #_0CF637: STA.b $02 + + #_0CF639: LDA.w #DramagahnimSpellOAM_offset_y + #_0CF63C: CLC + #_0CF63D: ADC.w pool_Dramagahnim_CastSpell_index_offset,Y + #_0CF640: STA.b $04 + + #_0CF642: LDA.w DramagahnimSpellCharPointer,X + #_0CF645: CLC + #_0CF646: ADC.w pool_Dramagahnim_CastSpell_index_offset,Y + #_0CF649: STA.b $06 + + #_0CF64B: LDA.w DramagahnimSpellPropPointer,X + #_0CF64E: CLC + #_0CF64F: ADC.w pool_Dramagahnim_CastSpell_index_offset,Y + #_0CF652: STA.b $08 + + ; ------------------------------------------------------- + + #_0CF654: SEP #$20 + + #_0CF656: LDA.b #$6E + #_0CF658: STA.b $28 + + #_0CF65A: LDA.b #$48 + #_0CF65C: STA.b $29 + + #_0CF65E: LDX.b $00 + + #_0CF660: LDA.w pool_Dramagahnim_CastSpell_oam_count,X + #_0CF663: TAY + + #_0CF664: JSR Attract_DrawPreloadedSprite + + #_0CF667: PLB + + ; ------------------------------------------------------- + + #_0CF668: LDA.b $51 + #_0CF66A: BNE .delay_tick + + #_0CF66C: DEC.b $62 + #_0CF66E: BEQ Dramagahnim_ReadySpell_advance + + #_0CF670: BRA .exit + + .delay_tick + #_0CF672: DEC.b $51 + + .exit + #_0CF674: RTS +} + +; ========================================================== + +org $0CF675 +pool_Dramagahnim_RealizeWhatJustHappened: +{ + .pointers_offset_x + #_0CF675: dw AttractTelebubbleOAM_step0_offset_x + #_0CF677: dw AttractTelebubbleOAM_step1_offset_x + + .pointers_offset_y + #_0CF679: dw AttractTelebubbleOAM_step0_offset_y + #_0CF67B: dw AttractTelebubbleOAM_step1_offset_y + + .pointers_char + #_0CF67D: dw AttractTelebubbleOAM_step0_char + #_0CF67F: dw AttractTelebubbleOAM_step1_char + + .pointers_prop + #_0CF681: dw AttractTelebubbleOAM_step0_prop + #_0CF683: dw AttractTelebubbleOAM_step1_prop + + .position_x + #_0CF685: db $78 + #_0CF686: db $70 + + .object_count + #_0CF687: db $00 + #_0CF688: db $01 +} + +; ------------------------------------------------------- + +org $0CF689 +Dramagahnim_RealizeWhatJustHappened: +{ + #_0CF689: LDA.b $51 + #_0CF68B: CMP.b #$06 + #_0CF68D: BNE .delay_sfx + + #_0CF68F: INC.b $52 + + #_0CF691: LDA.b #$33 ; SFX2.33 + #_0CF693: STA.w $012E + + .delay_sfx + #_0CF696: CMP.b #$40 + #_0CF698: BNE .delay_tick + + #_0CF69A: LDA.b #$E0 + #_0CF69C: STA.b $51 + + #_0CF69E: INC.b $60 + + .delay_tick + #_0CF6A0: CMP.b #$0F + #_0CF6A2: BCS .skip_draw + + #_0CF6A4: LSR A + #_0CF6A5: LSR A + #_0CF6A6: AND.b #$02 + #_0CF6A8: TAX + + #_0CF6A9: REP #$20 + + #_0CF6AB: LDA.w #AttractTelebubbleOAM_size + #_0CF6AE: STA.b $2D + + #_0CF6B0: LDA.l pool_Dramagahnim_RealizeWhatJustHappened_pointers_offset_x,X + #_0CF6B4: STA.b $02 + + #_0CF6B6: LDA.l pool_Dramagahnim_RealizeWhatJustHappened_pointers_offset_y,X + #_0CF6BA: STA.b $04 + + #_0CF6BC: LDA.l pool_Dramagahnim_RealizeWhatJustHappened_pointers_char,X + #_0CF6C0: STA.b $06 + + #_0CF6C2: LDA.l pool_Dramagahnim_RealizeWhatJustHappened_pointers_prop,X + #_0CF6C6: STA.b $08 + + ; ------------------------------------------------------- + + #_0CF6C8: SEP #$20 + + #_0CF6CA: TXA + #_0CF6CB: LSR A + #_0CF6CC: TAX + + #_0CF6CD: LDA.l pool_Dramagahnim_RealizeWhatJustHappened_position_x,X + #_0CF6D1: STA.b $28 + + #_0CF6D3: LDA.b #$60 + #_0CF6D5: STA.b $29 + + #_0CF6D7: LDA.l pool_Dramagahnim_RealizeWhatJustHappened_object_count,X + #_0CF6DB: TAY + + #_0CF6DC: JSR Attract_DrawPreloadedSprite + + .skip_draw + #_0CF6DF: INC.b $51 + + #_0CF6E1: RTS +} +; ========================================================== + +org $0CF6E2 +Dramagahnim_IdleGuiltily: +{ + #_0CF6E2: JSR Attract_DoTextInDungeonScene + + #_0CF6E5: REP #$20 + + #_0CF6E7: LDA.b $64 + + #_0CF6E9: SEP #$20 + + #_0CF6EB: BNE .exit + + #_0CF6ED: LDA.b $51 + #_0CF6EF: CMP.b #$1F + #_0CF6F1: BCS .delay_fade + + #_0CF6F3: AND.b #$01 + #_0CF6F5: BNE .delay_fade + + #_0CF6F7: DEC.b $13 + + .delay_fade + #_0CF6F9: DEC.b $51 + #_0CF6FB: BNE .exit + + #_0CF6FD: INC.b $5D + + .exit + #_0CF6FF: RTS +} + +; ========================================================== + +org $0CF700 +Attract_SkipToFileSelect: +{ + #_0CF700: DEC.b $13 + #_0CF702: BNE .exit + + #_0CF704: JSL EnableForceBlank + + #_0CF708: LDA.b #$13 + #_0CF70A: STA.w BG1SC + + #_0CF70D: LDA.b #$03 + #_0CF70F: STA.w BG2SC + + #_0CF712: REP #$20 + + #_0CF714: JSL Attract_SetUpConclusionHDMA + + #_0CF718: REP #$20 + + #_0CF71A: STZ.w $063A + #_0CF71D: STZ.w $0638 + + #_0CF720: STZ.w $0120 + #_0CF723: STZ.w $0124 + + #_0CF726: STZ.b $EA + + #_0CF728: SEP #$20 + + #_0CF72A: JMP.w FadeMusicAndResetSRAMMirror + +.exit + #_0CF72D: RTL +} + +org $0CF8A7 +AttractOAMData: +{ + .king_size + #_0CF8A7: db $02, $02, $02, $02 + + .king_offset_x + #_0CF8AB: db 16, 0, 16, 0 + + .king_offset_y + #_0CF8AF: db 16, 16, 0, 0 + + .king_char + #_0CF8B3: db $2A, $2A, $0A, $0A + + .king_prop + #_0CF8B7: db $7B, $3B, $7B, $3B + + ; ========================================================== + + .mantle_size + #_0CF8BB: db $02, $02, $02, $02, $02, $02 + + .mantle_offset_x + #_0CF8C1: db 0, 16, 32, 0, 16, 32 + + .mantle_offset_y + #_0CF8C7: db 0, 0, 0, 16, 16, 16 + + .mantle_char + #_0CF8CD: db $0C, $0E, $0C, $2C, $2E, $2C + + .mantle_prop + #_0CF8D3: db $31, $31, $71, $31, $31, $71 +} + +AttractAgahnimOAM: +{ + .size + #_0CF8D9: db $02, $02, $02, $02, $02, $02 + + .offset_x + #_0CF8DF: db 5, 11, 0, 16, 0, 16 + + .offset_y + #_0CF8E5: db 25, 25, 0, 0, 16, 16 + + ; ========================================================== + + .char_step3 + #_0CF8EB: db $6C, $6C, $82, $82, $A2, $A2 + + .char_step5 + #_0CF8F1: db $6C, $6C, $80, $82, $A0, $A2 + + .char_step6 + #_0CF8F7: db $6C, $6C, $82, $80, $A2, $A0 + + .char_step4 + #_0CF8FD: db $6C, $6C, $80, $80, $A0, $A0 + + .char_step0 + #_0CF903: db $6C, $6C, $84, $84, $A4, $A4 + + .char_step1 + #_0CF909: db $6C, $6C, $C4, $C2, $E4, $E6 + + .char_step2 + #_0CF90F: db $6C, $6C, $88, $8A, $A8, $AA + + ; ========================================================== + + .prop_step0 + #_0CF915: db $38, $38, $3B, $7B, $3B, $7B + + .prop_step1 + #_0CF91B: db $38, $38, $3B, $3B, $3B, $3B + + .prop_step2 + #_0CF921: db $38, $38, $3B, $3B, $3B, $3B +} + +; ========================================================== + +AttractAltarMaidenOAM: +{ + .size + #_0CF927: db $02, $02 + + .offset_x + #_0CF929: db $00, $08 + + .offset_y + #_0CF92B: db $00, $00 + + .char_step0 + #_0CF92D: db $03, $04 + + .char_step1 + #_0CF92F: db $00, $01 + + .prop + #_0CF931: db $3D, $3D +} + +; ========================================================== + +AttractAltarMaidenShadowOAM: +{ + .size + #_0CF933: db $02, $02 + + ; ========================================================== + + .offset_x_step4 + #_0CF935: db $00, $08 + + .offset_x_step3 + #_0CF937: db $00, $06 + + .offset_x_step2 + #_0CF939: db $00, $04 + + .offset_x_step1 + #_0CF93B: db $00, $02 + + .offset_x_step0 + #_0CF93D: db $00, $00 + + ; ========================================================== + + .offset_y + #_0CF93F: db $00, $00 + + .char + #_0CF941: db $6C, $6C + + .prop + #_0CF943: db $38, $38 +} + +; ========================================================== + +DramagahnimSpellOAM: +{ + .size + #_0CF945: db $00, $00, $00, $00 + #_0CF949: db $00, $00, $00, $00 + #_0CF94D: db $00, $00, $02, $02 + #_0CF951: db $02, $02 + + .offset_x + #_0CF953: db 0, 28, -2, 30 + #_0CF957: db -2, 30, 0, 28 + #_0CF95B: db 0, 28, 2, 18 + #_0CF95F: db 2, 18 + + .offset_y + #_0CF961: db 0, 0, 3, 3 + #_0CF965: db 11, 11, 16, 16 + #_0CF969: db 24, 24, 16, 16 + #_0CF96D: db 32, 32 + + ; ========================================================== + + .char_step0 + #_0CF96F: db $CE, $CE, $26, $26 + #_0CF973: db $36, $36, $26, $26 + #_0CF977: db $36, $36, $20, $20 + #_0CF97B: db $20, $20 + + .char_step1 + #_0CF97D: db $CE, $CE, $26, $26 + #_0CF981: db $36, $36, $26, $26 + #_0CF985: db $36, $36, $22, $22 + #_0CF989: db $22, $22 + + ; ========================================================== + + .prop_step0 + #_0CF98B: db $35, $35, $75, $35 + #_0CF98F: db $75, $35, $75, $35 + #_0CF993: db $75, $35, $35, $75 + #_0CF997: db $B5, $F5 + + .prop_step1 + #_0CF999: db $37, $37, $77, $37 + #_0CF99D: db $77, $37, $77, $37 + #_0CF9A1: db $77, $37, $37, $77 + #_0CF9A5: db $B7, $F7 +} + +; ========================================================== + +AttractTelebubbleOAM: +{ + .size + #_0CF9A7: db $02, $02 + + .step0_offset_x + #_0CF9A9: db 0 + + .step0_offset_y + #_0CF9AA: db 0 + + .step0_char + #_0CF9AB: db $C6 + + .step0_prop + #_0CF9AC: db $3D + + ; ========================================================== + + .step1_offset_x + #_0CF9AD: db 0, 16 + + .step1_offset_y + #_0CF9AF: db 0, 0 + + .step1_char + #_0CF9B1: db $24, $24 + + .step1_prop + #_0CF9B3: db $35, $75 +} \ No newline at end of file