summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/bank3e.asm676
1 files changed, 672 insertions, 4 deletions
diff --git a/engine/bank3e.asm b/engine/bank3e.asm
index af7cc074..ec7fa569 100644
--- a/engine/bank3e.asm
+++ b/engine/bank3e.asm
@@ -1,5 +1,652 @@
-Func_f8000: ; f8000 (3e:4000)
- dr $f8000,$f8bcb
+Func_f8000:
+ call Func_f9254
+ call DelayFrame
+ call DelayFrame
+ call DelayFrame
+ ld a, [hTilesetType]
+ push af
+ xor a
+ ld [hTilesetType], a
+ ld a, [wUpdateSpritesEnabled]
+ push af
+ ld a, $ff
+ ld [wUpdateSpritesEnabled], a
+ ld a, [rIE]
+ push af
+ xor a
+ ld [rIF], a
+ ld a, $f
+ ld [rIE], a
+ ld a, $8
+ ld [rSTAT], a
+ ld a, [$ffbd]
+ push af
+ ld a, $98
+ ld [$ffbd], a
+ call Func_f8fb3
+ call Func_f807a
+ xor a
+ ld [rBGP], a
+ ld [rOBP0], a
+ ld [rOBP1], a
+ call UpdateGBCPal_BGP
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ call Func_fbb5a
+ call ClearSprites
+ xor a
+ ld [hLCDCPointer], a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $90
+ ld [hWY], a
+ call DelayFrame
+ pop af
+ ld [$ffbd], a
+ xor a
+ ld [rIF], a
+ pop af
+ ld [rIE], a
+ xor a
+ ld [rSTAT], a
+ call RunDefaultPaletteCommand
+ call Func_0f16
+ call PlayDefaultMusic
+ call GBPalNormal
+ pop af
+ ld [wUpdateSpritesEnabled], a
+ pop af
+ ld [hTilesetType], a
+ ret
+
+Func_f807a:
+ call Func_f8116
+ call DelayFrame
+ ld b, $e
+ call RunPaletteCommand
+.asm_f8085
+ ld a, [$c5d1]
+ bit 7, a
+ ret nz
+ call Func_f923f
+ call Func_f80ac
+ ret nz
+ call Func_f8282
+ ld a, $3c
+ ld [$c5bd], a
+ call Func_fbb65
+ call Func_f8848
+ call Func_f80a8
+ call Func_f80c4
+ jr .asm_f8085
+
+Func_f80a8:
+ call DelayFrame
+ ret
+
+Func_f80ac:
+ ld hl, wPreventBlackout
+ bit 1, [hl]
+ ret z
+ ld a, [hJoyPressed]
+ and $4
+ ret
+ ld a, [hJoyPressed]
+ and $8
+ ret z
+ ld hl, $c5e2
+ ld a, [hl]
+ xor $1
+ ld [hl], a
+ ret
+
+Func_f80c4:
+ ld a, [$c634]
+ and a
+ ret z
+ ld hl, wChannelNoteDelayCounters
+ ld a, $1
+ cp [hl]
+ ret nz
+ inc hl
+ cp [hl]
+ ret nz
+ inc hl
+ cp [hl]
+ ret nz
+ ld a, [$c5e3]
+ ld e, a
+ ld a, [$c5e4]
+ and $3
+ ld d, a
+ sla e
+ rl d
+ ld e, d
+ ld d, $0
+ ld hl, Unkn_f80f5
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld [$c0e9], a
+ ld a, [hl]
+ ld [wMusicTempo], a
+ ret
+
+Unkn_f80f5:
+ dw $75
+ dw $6d
+ dw $65
+ dw $5d
+ dw $55
+
+Func_f80ff:
+ ld hl, wChannelNoteDelayCounters
+ ld a, $1
+ cp [hl]
+ ret nz
+ inc hl
+ cp [hl]
+ ret nz
+ inc hl
+ cp [hl]
+ ret nz
+ ld a, $75
+ ld [$c0e9], a
+ xor a
+ ld [wMusicTempo], a
+ ret
+
+Func_f8116:
+ call Func_f9279
+ call ClearSprites
+ call DisableLCD
+ ld hl, wSerialEnemyMonsPatchList
+ ld bc, $67
+ xor a
+ call FillMemory
+ ld hl, $c700
+ ld bc, $200
+ xor a
+ call FillMemory
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call Func_fbb5a
+ ld hl, $4f14
+ ld de, $9000
+ ld bc, $500
+ ld a, $20
+ call FarCopyData
+ ld hl, $5324
+ ld de, $8000
+ ld bc, $1000
+ ld a, $20
+ call FarCopyData
+ ld a, $d3
+ ld [$c5c0], a
+ ld a, $53
+ ld [$c5c1], a
+ ld a, $fa
+ ld [$c5c4], a
+ ld a, $53
+ ld [$c5c5], a
+ ld a, $7
+ ld [$c5c6], a
+ ld a, $55
+ ld [$c5c7], a
+ ld a, $5
+ ld [$c5c2], a
+ ld a, $54
+ ld [$c5c3], a
+ ld hl, $9800
+ ld bc, $800
+ ld a, $0
+ call FillMemory
+ ld hl, $98c0
+ ld bc, $180
+ ld a, $b
+ call FillMemory
+ ld a, $1
+ ld de, $7458
+ call Func_fbb93
+ ld a, $74
+ ld [$c5ea], a
+ call Func_f9223
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7e
+ ld [hWY], a
+ ld a, $42
+ ld [hLCDCPointer], a
+ ld a, $40
+ ld [$c5e3], a
+ xor a
+ ld [$c5e4], a
+ xor a
+ ld [$c5d6], a
+ ld a, $60
+ ld [$c5d7], a
+ ld hl, $c61a
+ ld bc, $14
+ ld a, $74
+ call FillMemory
+ call Func_f81ff
+ call Func_f8256
+ ld a, $e3
+ ld [rLCDC], a
+ call Func_f81e9
+ ld a, $e4
+ ld [rOBP0], a
+ ld a, $e0
+ ld [rOBP1], a
+ call UpdateGBCPal_OBP0
+ call UpdateGBCPal_OBP1
+ ret
+
+Func_f81e9:
+ ld a, [wOnSGB]
+ and a
+ jr nz, .asm_f81f7
+ ld a, $d0
+ ld [rBGP], a
+ call UpdateGBCPal_BGP
+ ret
+
+.asm_f81f7
+ ld a, $e4
+ ld [rBGP], a
+ call UpdateGBCPal_BGP
+ ret
+
+Func_f81ff:
+ ld hl, wSpriteDataEnd
+ ld de, Unkn_f8249
+ ld b, $97
+ ld c, $80
+ ld a, $4
+ call Func_f8233
+ ld de, Unkn_f8248
+ ld b, $96
+ ld c, $50
+ ld a, $1
+ call Func_f8233
+ ld de, Unkn_f824d
+ ld b, $14
+ ld c, $20
+ ld a, $5
+ call Func_f8233
+ ld de, Unkn_f8252
+ ld b, $20
+ ld c, $80
+ ld a, $4
+ call Func_f8233
+ ret
+
+Func_f8233:
+.asm_f8233
+ push af
+ ld [hl], b
+ inc hl
+ ld [hl], c
+ inc hl
+ ld a, [de]
+ ld [hl], a
+ inc hl
+ ld [hl], $0
+ inc hl
+ ld a, c
+ add $8
+ ld c, a
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_f8233
+ ret
+
+Unkn_f8248:
+ db $fe
+
+Unkn_f8249:
+ db $d0
+ db $d0
+ db $d0
+ db $d0
+
+Unkn_f824d:
+ db $ec
+ db $ed
+ db $ed
+ db $ee
+ db $ef
+
+Unkn_f8252:
+ db $ec
+ db $ed
+ db $ee
+ db $ef
+
+Func_f8256:
+ ld de, $9c21
+ ld hl, Unkn_f8279
+ ld c, $9
+.asm_f825e
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_f825e
+ ld hl, $9c01
+ ld [hl], $15
+ ld hl, $9c02
+ ld [hl], $16
+ ld hl, $9c2c
+ ld [hl], $1b
+ ld hl, $9c2d
+ ld [hl], $1c
+ ret
+
+Unkn_f8279:
+ db $17
+ db $18
+ db $19
+ db $19
+ db $19
+ db $19
+ db $19
+ db $19
+ db $19
+
+Func_f8282:
+ ld a, [$c5d1]
+ ld e, a
+ ld d, $0
+ ld hl, Jumptable_f8291
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_f8291:
+ dw Func_f82ab
+ dw Func_f82bd
+ dw Func_f8324
+ dw Func_f835c
+ dw Func_f838c
+ dw Func_f8399
+ dw Func_f83aa
+ dw Func_f83bb
+ dw Func_f83cc
+ dw Func_f83e3
+ dw Func_f8406
+ dw Func_f840f
+ dw Func_f841d
+
+Func_f82ab:
+ ld a, $2
+ ld de, Unkn_f88e0
+ call Func_fbb93
+ ld hl, $c5d1
+ inc [hl]
+ ld a, $1
+ ld [$c634], a
+ ret
+
+Func_f82bd:
+ ld a, [$c5e5]
+ cp $18
+ jr nc, .asm_f82e8
+ ld hl, $c5d6
+ ld a, [hli]
+ or [hl]
+ and a
+ jr z, .asm_f82f6
+ call Random
+ ld [$c5d5], a
+ call Func_f9210
+ call Func_f88ae
+ call Func_f886b
+ call Func_f8cb0
+ call Func_f844c
+ call Func_f88e4
+ call Func_f88fd
+ ret
+
+.asm_f82e8
+ ld hl, $c5d1
+ inc [hl]
+ xor a
+ ld [$c634], a
+ ld a, $c0
+ ld [$c632], a
+ ret
+
+.asm_f82f6
+ ld a, $1
+Func_f82f8:
+ ld [$c630], a
+ ld a, $c
+ ld [$c5d1], a
+Func_f8300:
+ ld a, $80
+ ld [$c631], a
+ ld a, $b
+ ld de, $8858
+ call Func_fbb93
+ ld hl, $7
+ add hl, bc
+ ld [hl], $80
+ ld hl, $b
+ add hl, bc
+ ld [hl], $80
+ ld hl, $c
+ add hl, bc
+ ld [hl], $30
+ xor a
+ ld [$c634], a
+ ret
+
+Func_f8324:
+ call Func_f8440
+ jr c, .asm_f833d
+ xor a
+ ld [$c5d5], a
+ call Func_f9210
+ call Func_f88ae
+ call Func_f886b
+ call Func_f8c97
+ call Func_f80ff
+ ret
+
+.asm_f833d
+ ld hl, $c5d1
+ inc [hl]
+ ld a, $90
+ ld [hSCX], a
+ ld a, $72
+ ld [$c5d3], a
+ ld a, $4
+ ld [$c5d2], a
+ xor a
+ ld [hLCDCPointer], a
+ ld [$c617], a
+ ld [$c618], a
+ ld [$c619], a
+ ret
+
+Func_f835c:
+ ld a, [hSCX]
+ and a
+ jr z, .asm_f837b
+ call Func_f9210
+ call Func_f88ae
+ call Func_f886b
+ ld a, [hSCX]
+ dec a
+ dec a
+ dec a
+ dec a
+ ld [hSCX], a
+ ld a, $e0
+ ld [$c62e], a
+ call Func_f8cc7
+ ret
+
+.asm_f837b
+ xor a
+ ld [$c5e3], a
+ ld [$c5e4], a
+ ld hl, $c5d1
+ inc [hl]
+ ld a, $5
+ ld [$c5d2], a
+ ret
+
+Func_f838c:
+ call Func_f891e
+ ld a, $20
+ ld [$c632], a
+ ld hl, $c5d1
+ inc [hl]
+ ret
+
+Func_f8399:
+ call Func_f8440
+ ret nc
+ call Func_f8a92
+ ld a, $40
+ ld [$c632], a
+ ld hl, $c5d1
+ inc [hl]
+ ret
+
+Func_f83aa:
+ call Func_f8440
+ ret nc
+ call Func_f8ae4
+ ld a, $40
+ ld [$c632], a
+ ld hl, $c5d1
+ inc [hl]
+ ret
+
+Func_f83bb:
+ call Func_f8440
+ ret nc
+ call Func_f8b7a
+ ld a, $40
+ ld [$c632], a
+ ld hl, $c5d1
+ inc [hl]
+ ret
+
+Func_f83cc:
+ call Func_f8440
+ ret nc
+ call Func_f8aa9
+ push af
+ call Func_f8b5d
+ pop af
+ ret nc
+ ld a, $40
+ ld [$c632], a
+ ld hl, $c5d1
+ inc [hl]
+ ret
+
+Func_f83e3:
+ call Func_f8440
+ ret nc
+ call Func_f8afb
+ push af
+ call Func_f8b5d
+ pop af
+ ret nc
+ ld a, $80
+ ld [$c632], a
+ ld hl, $c5d1
+ inc [hl]
+ call Func_f8b92
+ ret nc
+ call Func_f8a7c
+Func_f83ff:
+ ld a, $6
+ ld [$c5d2], a
+ ret
+
+Func_f8406:
+ call Func_f8440
+Func_f8408:
+ ret nc
+ ld hl, $c5d1
+ inc [hl]
+ ret
+
+Func_f840f:
+ call Func_f9210
+ ld a, [hJoyPressed]
+ and $1
+ ret z
+ ld hl, $c5d1
+ set 7, [hl]
+ ret
+
+Func_f841d:
+ call Func_f9210
+ call Func_f88ae
+ call Func_f886b
+ call Func_f8cb0
+ call Func_f80ff
+ ld hl, $c631
+ ld a, [hl]
+ and a
+ jr z, .asm_f8435
+ dec [hl]
+ ret
+
+.asm_f8435
+ ld a, [hJoyPressed]
+ and $1
+ ret z
+ ld hl, $c5d1
+ set 7, [hl]
+ ret
+
+Func_f8440:
+ dr $f8440,$f844c
+Func_f844c:
+ dr $f844c,$f8848
+Func_f8848:
+ dr $f8848,$f886b
+Func_f886b:
+ dr $f886b,$f88ae
+Func_f88ae:
+ dr $f88ae,$f88e0
+Unkn_f88e0:
+ dr $f88e0,$f88e4
+Func_f88e4:
+ dr $f88e4,$f88fd
+Func_f88fd:
+ dr $f88fd,$f891e
+Func_f891e:
+ dr $f891e,$f8a7c
+Func_f8a7c:
+ dr $f8a7c,$f8a92
+Func_f8a92:
+ dr $f8a92,$f8aa9
+Func_f8aa9:
+ dr $f8aa9,$f8ae4
+Func_f8ae4:
+ dr $f8ae4,$f8afb
+Func_f8afb:
+ dr $f8afb,$f8b5d
+Func_f8b5d:
+ dr $f8b5d,$f8b7a
+Func_f8b7a:
+ dr $f8b7a,$f8b92
+Func_f8b92:
+ dr $f8b92,$f8bcb
Func_f8bcb: ; f8bcb (3e:4bcb)
push de
@@ -10,7 +657,26 @@ Func_f8bcb: ; f8bcb (3e:4bcb)
ret
Func_f8bdf: ; f8bdf (3e:4bdf)
- dr $f8bdf,$f982d
+ dr $f8bdf,$f8c97
+Func_f8c97:
+ dr $f8c97,$f8cb0
+
+Func_f8cb0:
+ dr $f8cb0,$f8cc7
+Func_f8cc7:
+ dr $f8cc7,$f8fb3
+Func_f8fb3:
+ dr $f8fb3,$f9210
+Func_f9210:
+ dr $f9210,$f9223
+Func_f9223:
+ dr $f9223,$f923f
+Func_f923f:
+ dr $f923f,$f9254
+Func_f9254:
+ dr $f9254,$f9279
+Func_f9279:
+ dr $f9279,$f982d
PlayIntroScene: ; f982d (3e:582d)
dr $f982d,$fa35a
@@ -24,4 +690,6 @@ Func_fbb5a: ; fbb5a (3e:7b5a)
ret
Func_fbb65: ; fbb65 (3e:7b65)
- dr $fbb65,$fbd76 \ No newline at end of file
+ dr $fbb65,$fbb93
+Func_fbb93:
+ dr $fbb93,$fbd76 \ No newline at end of file