diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/constants/animation_constants.asm | 14 | ||||
-rw-r--r-- | src/data/map_ow_frameset_pointers.asm | 37 | ||||
-rw-r--r-- | src/data/map_ow_framesets.asm | 245 | ||||
-rw-r--r-- | src/engine/bank03.asm | 2 | ||||
-rw-r--r-- | src/engine/bank20.asm | 477 | ||||
-rw-r--r-- | src/engine/home.asm | 8 | ||||
-rw-r--r-- | src/wram.asm | 20 |
7 files changed, 430 insertions, 373 deletions
diff --git a/src/constants/animation_constants.asm b/src/constants/animation_constants.asm index 80c425d..16f534f 100644 --- a/src/constants/animation_constants.asm +++ b/src/constants/animation_constants.asm @@ -152,3 +152,17 @@ const_value = const_value + 1 const DUEL_ANIM_STRUCT_UNKNOWN_2 ; $6 const DUEL_ANIM_STRUCT_BANK ; $7 DUEL_ANIM_STRUCT_SIZE EQU const_value + + ; ow_frame struct constants + const_def + const OW_FRAME_STRUCT_DURATION ; $0 + const OW_FRAME_STRUCT_VRAM_TILE_OFFSET ; $1 + const OW_FRAME_STRUCT_VRAM_BANK ; $2 + const OW_FRAME_STRUCT_TILESET_BANK ; $3 + const OW_FRAME_STRUCT_TILESET ; $4 +const_value = const_value + 1 + const OW_FRAME_STRUCT_TILESET_OFFSET ; $6 +const_value = const_value + 1 +OW_FRAME_STRUCT_SIZE EQU const_value + +NUM_OW_FRAMESET_SUBGROUPS EQU 3 diff --git a/src/data/map_ow_frameset_pointers.asm b/src/data/map_ow_frameset_pointers.asm new file mode 100644 index 0000000..3210533 --- /dev/null +++ b/src/data/map_ow_frameset_pointers.asm @@ -0,0 +1,37 @@ +MapOWFramesetPointers: ; 805d6 (20:45d6)
+; non-cgb, cgb
+ dw OverworldMapOWFrameset, OverworldMapCGBOWFrameset ; OVERWORLD_MAP
+ dw MasonLaboratoryOWFrameset, MasonLaboratoryOWFrameset ; MASON_LABORATORY
+ dw DeckMachineRoomOWFrameset, DeckMachineRoomCGBOWFrameset ; DECK_MACHINE_ROOM
+ dw DefaultOWFrameset, DefaultOWFrameset ; ISHIHARAS_HOUSE
+ dw DefaultOWFrameset, DefaultOWFrameset ; FIGHTING_CLUB_ENTRANCE
+ dw DefaultOWFrameset, DefaultOWFrameset ; FIGHTING_CLUB_LOBBY
+ dw DefaultOWFrameset, DefaultOWFrameset ; FIGHTING_CLUB
+ dw DefaultOWFrameset, DefaultOWFrameset ; ROCK_CLUB_ENTRANCE
+ dw DefaultOWFrameset, DefaultOWFrameset ; ROCK_CLUB_LOBBY
+ dw DefaultOWFrameset, DefaultOWFrameset ; ROCK_CLUB
+ dw DefaultOWFrameset, DefaultOWFrameset ; WATER_CLUB_ENTRANCE
+ dw DefaultOWFrameset, DefaultOWFrameset ; WATER_CLUB_LOBBY
+ dw WaterClubOWFrameset, WaterClubOWFrameset ; WATER_CLUB
+ dw DefaultOWFrameset, DefaultOWFrameset ; LIGHTNING_CLUB_ENTRANCE
+ dw DefaultOWFrameset, DefaultOWFrameset ; LIGHTNING_CLUB_LOBBY
+ dw LightningClubOWFrameset, LightningClubOWFrameset ; LIGHTNING_CLUB
+ dw DefaultOWFrameset, DefaultOWFrameset ; GRASS_CLUB_ENTRANCE
+ dw DefaultOWFrameset, DefaultOWFrameset ; GRASS_CLUB_LOBBY
+ dw DefaultOWFrameset, DefaultOWFrameset ; GRASS_CLUB
+ dw DefaultOWFrameset, DefaultOWFrameset ; PSYCHIC_CLUB_ENTRANCE
+ dw DefaultOWFrameset, DefaultOWFrameset ; PSYCHIC_CLUB_LOBBY
+ dw DefaultOWFrameset, DefaultOWFrameset ; PSYCHIC_CLUB
+ dw DefaultOWFrameset, DefaultOWFrameset ; SCIENCE_CLUB_ENTRANCE
+ dw DefaultOWFrameset, DefaultOWFrameset ; SCIENCE_CLUB_LOBBY
+ dw ScienceClubOWFrameset, ScienceClubOWFrameset ; SCIENCE_CLUB
+ dw DefaultOWFrameset, DefaultOWFrameset ; FIRE_CLUB_ENTRANCE
+ dw DefaultOWFrameset, DefaultOWFrameset ; FIRE_CLUB_LOBBY
+ dw FireClubOWFrameset, FireClubCGBOWFrameset ; FIRE_CLUB
+ dw DefaultOWFrameset, DefaultOWFrameset ; CHALLENGE_HALL_ENTRANCE
+ dw DefaultOWFrameset, DefaultOWFrameset ; CHALLENGE_HALL_LOBBY
+ dw ChallengeHallOWFrameset, ChallengeHallOWFrameset ; CHALLENGE_HALL
+ dw DefaultOWFrameset, DefaultOWFrameset ; POKEMON_DOME_ENTRANCE
+ dw DefaultOWFrameset, DefaultOWFrameset ; POKEMON_DOME
+ dw HallOfHonorOWFrameset, HallOfHonorOWFrameset ; HALL_OF_HONOR
+; 0x8065e
diff --git a/src/data/map_ow_framesets.asm b/src/data/map_ow_framesets.asm new file mode 100644 index 0000000..dec17be --- /dev/null +++ b/src/data/map_ow_framesets.asm @@ -0,0 +1,245 @@ +; each map has two corresponding OW framesets, for non-CGB and CGB respectively
+; within each frameset there is a header which contains relative
+; offsets to each frameset subgroup, for a total of 3
+; (in fact, only the first subgroup is effectively used,
+; the other two always point to end of data, -1)
+; inside a subgroup, some OW frames are defined with data
+; regarding its duration, and which tile to substitute
+; each OW frame defines 1 single tile to substitute, however
+; frames with duration of 0 are processed at the same time as previous ones,
+; so several tiles can be changed concurrently
+
+INCLUDE "data/map_ow_frameset_pointers.asm"
+
+; OW_FRAME_STRUCT (see constants/animation_constants.asm)
+; \1 = duration
+; \2 = VRAM tile offset
+; \3 = VRAM bank
+; \4 = tileset
+; \5 = tileset offset
+ow_frame: MACRO
+ db \1
+ db \2
+ db \3
+ dbw BANK(\4) - BANK(MapOWFramesetPointers), \4 + $2
+ dw \5
+ENDM
+
+DefaultOWFrameset: ; 8055e (20:455e)
+ db $3, $3, $3
+ db -1 ; end
+
+OverworldMapOWFrameset: ; 80662 (20:4662)
+ db $3, $33, $33
+
+ ow_frame 7, $f3, 0, OverworldMapTiles, $73
+ ow_frame 7, $f4, 0, OverworldMapTiles, $74
+ ow_frame 7, $f3, 0, OverworldMapTiles, $74
+ ow_frame 7, $f4, 0, OverworldMapTiles, $75
+ ow_frame 7, $f3, 0, OverworldMapTiles, $75
+ ow_frame 7, $f4, 0, OverworldMapTiles, $73
+ db -1 ; end
+
+OverworldMapCGBOWFrameset: ; 80696 (20:4696)
+ db $3, $ab, $ab
+
+ ow_frame 4, $f3, 0, OverworldMapTiles, $73
+ ow_frame 4, $f4, 0, OverworldMapTiles, $74
+ ow_frame 4, $18, 1, OverworldMapTiles, $98
+ ow_frame 0, $19, 1, OverworldMapTiles, $99
+ ow_frame 0, $1a, 1, OverworldMapTiles, $9a
+ ow_frame 0, $1b, 1, OverworldMapTiles, $9b
+ ow_frame 0, $1c, 1, OverworldMapTiles, $9c
+ ow_frame 4, $f3, 0, OverworldMapTiles, $74
+ ow_frame 4, $f4, 0, OverworldMapTiles, $75
+ ow_frame 4, $18, 1, OverworldMapTiles, $9d
+ ow_frame 0, $19, 1, OverworldMapTiles, $9e
+ ow_frame 0, $1a, 1, OverworldMapTiles, $9f
+ ow_frame 0, $1b, 1, OverworldMapTiles, $a0
+ ow_frame 0, $1c, 1, OverworldMapTiles, $a1
+ ow_frame 7, $f3, 0, OverworldMapTiles, $75
+ ow_frame 7, $f4, 0, OverworldMapTiles, $73
+ ow_frame 4, $18, 1, OverworldMapTiles, $a2
+ ow_frame 0, $19, 1, OverworldMapTiles, $a3
+ ow_frame 0, $1a, 1, OverworldMapTiles, $a4
+ ow_frame 0, $1b, 1, OverworldMapTiles, $a5
+ ow_frame 0, $1c, 1, OverworldMapTiles, $a6
+ db -1 ; end
+
+MasonLaboratoryOWFrameset: ; 80742 (20:4742)
+ db $3, $43, $43
+
+ ow_frame 3, $dc, 0, MasonLaboratoryTilesetGfx, $5c
+ ow_frame 0, $dd, 0, MasonLaboratoryTilesetGfx, $5d
+ ow_frame 3, $de, 0, MasonLaboratoryTilesetGfx, $5e
+ ow_frame 0, $df, 0, MasonLaboratoryTilesetGfx, $5f
+ ow_frame 3, $dc, 0, MasonLaboratoryTilesetGfx, $60
+ ow_frame 0, $dd, 0, MasonLaboratoryTilesetGfx, $61
+ ow_frame 3, $de, 0, MasonLaboratoryTilesetGfx, $62
+ ow_frame 0, $df, 0, MasonLaboratoryTilesetGfx, $63
+ db -1 ; end
+
+DeckMachineRoomOWFrameset: ; 80786 (20:4786)
+ db $3, $83, $83
+
+ ow_frame 3, $dc, 0, MasonLaboratoryTilesetGfx, $5c
+ ow_frame 0, $dd, 0, MasonLaboratoryTilesetGfx, $5d
+ ow_frame 3, $de, 0, MasonLaboratoryTilesetGfx, $5e
+ ow_frame 0, $df, 0, MasonLaboratoryTilesetGfx, $5f
+ ow_frame 5, $e4, 0, MasonLaboratoryTilesetGfx, $64
+ ow_frame 0, $e5, 0, MasonLaboratoryTilesetGfx, $65
+ ow_frame 0, $e6, 0, MasonLaboratoryTilesetGfx, $66
+ ow_frame 0, $e7, 0, MasonLaboratoryTilesetGfx, $67
+ ow_frame 3, $dc, 0, MasonLaboratoryTilesetGfx, $60
+ ow_frame 0, $dd, 0, MasonLaboratoryTilesetGfx, $61
+ ow_frame 3, $de, 0, MasonLaboratoryTilesetGfx, $62
+ ow_frame 0, $df, 0, MasonLaboratoryTilesetGfx, $63
+ ow_frame 5, $e4, 0, MasonLaboratoryTilesetGfx, $68
+ ow_frame 0, $e5, 0, MasonLaboratoryTilesetGfx, $69
+ ow_frame 0, $e6, 0, MasonLaboratoryTilesetGfx, $6a
+ ow_frame 0, $e7, 0, MasonLaboratoryTilesetGfx, $6b
+ db -1 ; end
+
+DeckMachineRoomCGBOWFrameset: ; 8080a (20:480a)
+ db $3, $83, $83
+
+ ow_frame 3, $dc, 0, MasonLaboratoryTilesetGfx, $5c
+ ow_frame 0, $dd, 0, MasonLaboratoryTilesetGfx, $5d
+ ow_frame 3, $de, 0, MasonLaboratoryTilesetGfx, $5e
+ ow_frame 0, $df, 0, MasonLaboratoryTilesetGfx, $5f
+ ow_frame 5, $03, 1, MasonLaboratoryTilesetGfx, $83
+ ow_frame 0, $04, 1, MasonLaboratoryTilesetGfx, $84
+ ow_frame 0, $05, 1, MasonLaboratoryTilesetGfx, $85
+ ow_frame 0, $06, 1, MasonLaboratoryTilesetGfx, $86
+ ow_frame 3, $dc, 0, MasonLaboratoryTilesetGfx, $60
+ ow_frame 0, $dd, 0, MasonLaboratoryTilesetGfx, $61
+ ow_frame 3, $de, 0, MasonLaboratoryTilesetGfx, $62
+ ow_frame 0, $df, 0, MasonLaboratoryTilesetGfx, $63
+ ow_frame 5, $03, 1, MasonLaboratoryTilesetGfx, $87
+ ow_frame 0, $04, 1, MasonLaboratoryTilesetGfx, $88
+ ow_frame 0, $05, 1, MasonLaboratoryTilesetGfx, $89
+ ow_frame 0, $06, 1, MasonLaboratoryTilesetGfx, $8a
+ db -1 ; end
+
+FireClubOWFrameset: ; 8088e (20:488e)
+ db $3, $83, $83
+
+ ow_frame 5, $9f, 0, FireClubTilesetGfx, $1f
+ ow_frame 0, $a0, 0, FireClubTilesetGfx, $20
+ ow_frame 0, $a1, 0, FireClubTilesetGfx, $21
+ ow_frame 0, $a2, 0, FireClubTilesetGfx, $22
+ ow_frame 6, $a3, 0, FireClubTilesetGfx, $23
+ ow_frame 0, $a4, 0, FireClubTilesetGfx, $24
+ ow_frame 0, $a5, 0, FireClubTilesetGfx, $25
+ ow_frame 0, $a6, 0, FireClubTilesetGfx, $26
+ ow_frame 5, $9f, 0, FireClubTilesetGfx, $27
+ ow_frame 0, $a0, 0, FireClubTilesetGfx, $28
+ ow_frame 0, $a1, 0, FireClubTilesetGfx, $29
+ ow_frame 0, $a2, 0, FireClubTilesetGfx, $2a
+ ow_frame 6, $a3, 0, FireClubTilesetGfx, $2b
+ ow_frame 0, $a4, 0, FireClubTilesetGfx, $2c
+ ow_frame 0, $a5, 0, FireClubTilesetGfx, $2d
+ ow_frame 0, $a6, 0, FireClubTilesetGfx, $2e
+ db -1 ; end
+
+FireClubCGBOWFrameset: ; 80912 (20:4912)
+ db $3, $83, $83
+
+ ow_frame 5, $bb, 0, FireClubTilesetGfx, $3b
+ ow_frame 0, $bc, 0, FireClubTilesetGfx, $3c
+ ow_frame 0, $bd, 0, FireClubTilesetGfx, $3d
+ ow_frame 0, $be, 0, FireClubTilesetGfx, $3e
+ ow_frame 6, $bf, 0, FireClubTilesetGfx, $3f
+ ow_frame 0, $c0, 0, FireClubTilesetGfx, $40
+ ow_frame 0, $c1, 0, FireClubTilesetGfx, $41
+ ow_frame 0, $c2, 0, FireClubTilesetGfx, $42
+ ow_frame 5, $bb, 0, FireClubTilesetGfx, $43
+ ow_frame 0, $bc, 0, FireClubTilesetGfx, $44
+ ow_frame 0, $bd, 0, FireClubTilesetGfx, $45
+ ow_frame 0, $be, 0, FireClubTilesetGfx, $46
+ ow_frame 6, $bf, 0, FireClubTilesetGfx, $47
+ ow_frame 0, $c0, 0, FireClubTilesetGfx, $48
+ ow_frame 0, $c1, 0, FireClubTilesetGfx, $49
+ ow_frame 0, $c2, 0, FireClubTilesetGfx, $4a
+ db -1 ; end
+
+WaterClubOWFrameset: ; 80996 (20:4996)
+ db $3, $c3, $c3
+
+ ow_frame 1, $e2, 0, WaterClubTilesetGfx, $62
+ ow_frame 1, $e3, 0, WaterClubTilesetGfx, $63
+ ow_frame 3, $e4, 0, WaterClubTilesetGfx, $64
+ ow_frame 0, $e5, 0, WaterClubTilesetGfx, $65
+ ow_frame 3, $e6, 0, WaterClubTilesetGfx, $66
+ ow_frame 0, $e7, 0, WaterClubTilesetGfx, $67
+ ow_frame 1, $e2, 0, WaterClubTilesetGfx, $68
+ ow_frame 1, $e3, 0, WaterClubTilesetGfx, $69
+ ow_frame 3, $e4, 0, WaterClubTilesetGfx, $6a
+ ow_frame 0, $e5, 0, WaterClubTilesetGfx, $6b
+ ow_frame 3, $e6, 0, WaterClubTilesetGfx, $6c
+ ow_frame 0, $e7, 0, WaterClubTilesetGfx, $6d
+ ow_frame 1, $e2, 0, WaterClubTilesetGfx, $62
+ ow_frame 1, $e3, 0, WaterClubTilesetGfx, $63
+ ow_frame 3, $e4, 0, WaterClubTilesetGfx, $64
+ ow_frame 0, $e5, 0, WaterClubTilesetGfx, $65
+ ow_frame 3, $e6, 0, WaterClubTilesetGfx, $66
+ ow_frame 0, $e7, 0, WaterClubTilesetGfx, $67
+ ow_frame 1, $e2, 0, WaterClubTilesetGfx, $6e
+ ow_frame 1, $e3, 0, WaterClubTilesetGfx, $6f
+ ow_frame 3, $e4, 0, WaterClubTilesetGfx, $70
+ ow_frame 0, $e5, 0, WaterClubTilesetGfx, $71
+ ow_frame 3, $e6, 0, WaterClubTilesetGfx, $72
+ ow_frame 0, $e7, 0, WaterClubTilesetGfx, $73
+ db -1 ; end
+
+LightningClubOWFrameset: ; 80a5a (20:4a5a)
+ db $3, $c3, $c3
+
+ ow_frame 10, $a2, 0, LightningClubTilesetGfx, $22
+ ow_frame 0, $a3, 0, LightningClubTilesetGfx, $23
+ ow_frame 0, $aa, 0, LightningClubTilesetGfx, $2a
+ ow_frame 0, $ab, 0, LightningClubTilesetGfx, $2b
+ ow_frame 4, $a5, 0, LightningClubTilesetGfx, $25
+ ow_frame 0, $a6, 0, LightningClubTilesetGfx, $26
+ ow_frame 0, $ac, 0, LightningClubTilesetGfx, $2c
+ ow_frame 0, $ad, 0, LightningClubTilesetGfx, $2d
+ ow_frame 4, $a7, 0, LightningClubTilesetGfx, $27
+ ow_frame 0, $a8, 0, LightningClubTilesetGfx, $28
+ ow_frame 0, $b0, 0, LightningClubTilesetGfx, $30
+ ow_frame 0, $b1, 0, LightningClubTilesetGfx, $31
+ ow_frame 10, $a2, 0, LightningClubTilesetGfx, $2a
+ ow_frame 0, $a3, 0, LightningClubTilesetGfx, $2b
+ ow_frame 0, $aa, 0, LightningClubTilesetGfx, $22
+ ow_frame 0, $ab, 0, LightningClubTilesetGfx, $23
+ ow_frame 4, $a5, 0, LightningClubTilesetGfx, $2d
+ ow_frame 0, $a6, 0, LightningClubTilesetGfx, $2e
+ ow_frame 0, $ac, 0, LightningClubTilesetGfx, $24
+ ow_frame 0, $ad, 0, LightningClubTilesetGfx, $25
+ ow_frame 4, $a7, 0, LightningClubTilesetGfx, $2f
+ ow_frame 0, $a8, 0, LightningClubTilesetGfx, $30
+ ow_frame 0, $b0, 0, LightningClubTilesetGfx, $28
+ ow_frame 0, $b1, 0, LightningClubTilesetGfx, $29
+ db -1 ; end
+
+ScienceClubOWFrameset: ; 80b1e (20:4b1e)
+ db $3, $13, $13
+ ow_frame 11, $c7, 0, ScienceClubTilesetGfx, $47
+ ow_frame 11, $c7, 0, ScienceClubTilesetGfx, $48
+ db -1 ; end
+
+ChallengeHallOWFrameset: ; 80b32 (20:4b32)
+ db $3, $3, $3
+ db -1 ; end
+
+HallOfHonorOWFrameset: ; 80b36 (20:4b36)
+ db $3, $43, $43
+ ow_frame 11, $a4, 0, HallOfHonorTilesetGfx, $28
+ ow_frame 0, $a5, 0, HallOfHonorTilesetGfx, $29
+ ow_frame 0, $a6, 0, HallOfHonorTilesetGfx, $2a
+ ow_frame 0, $a7, 0, HallOfHonorTilesetGfx, $2b
+ ow_frame 11, $a4, 0, HallOfHonorTilesetGfx, $2c
+ ow_frame 0, $a5, 0, HallOfHonorTilesetGfx, $2d
+ ow_frame 0, $a6, 0, HallOfHonorTilesetGfx, $2e
+ ow_frame 0, $a7, 0, HallOfHonorTilesetGfx, $2f
+ db -1 ; end
+; 0x80b7a
diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm index 4013cd4..f8c641c 100644 --- a/src/engine/bank03.asm +++ b/src/engine/bank03.asm @@ -42,7 +42,7 @@ LoadMap: ; c000 (3:4000) call Func_c4b9 call Func_c943 call Func_c158 - farcall Func_80480 + farcall DoMapOWFrame call Func_c199 xor a ld [wd0b4], a diff --git a/src/engine/bank20.asm b/src/engine/bank20.asm index 2ff90f4..5b4de83 100644 --- a/src/engine/bank20.asm +++ b/src/engine/bank20.asm @@ -803,7 +803,9 @@ CopyPaletteDataToBuffer: ; 80456 (20:4456) INCROM $8047b, $80480 -Func_80480: ; 80480 (20:4480) +; for the current map, process the animation +; data of its corresponding OW tiles +DoMapOWFrame: ; 80480 (20:4480) push hl push bc ld a, [wCurMap] @@ -817,160 +819,176 @@ Func_80480: ; 80480 (20:4480) add 2 ld c, a .not_cgb - ld b, $00 - ld hl, Data_805d6 + ld b, $0 + ld hl, MapOWFramesetPointers add hl, bc + ; got pointer for current map's frameset data ld a, [hli] ld h, [hl] ld l, a - call Func_804a2 + call ProcessOWFrameset pop bc pop hl ret ; 0x804a2 -; hl written to wd318 -Func_804a2: ; 804a2 (20:44a2) +; processes the OW frameset pointed by hl +ProcessOWFrameset: ; 804a2 (20:44a2) push hl push bc ld a, l - ld [wd318], a + ld [wCurMapOWFrameset], a ld a, h - ld [wd318 + 1], a + ld [wCurMapOWFrameset + 1], a xor a - ld [wd322], a - call Func_8059a + ld [wumLoadedFramesetSubgroups], a + call ClearOWFramesetSubgroups ld c, 0 -.asm_804b5 - call Func_805aa - call Func_804f3 - ld a, [wd320] - cp $ff - jr z, .asm_804cf - ld a, [wd322] +.loop_subgroups + call LoadOWFramesetSubgroup + call GetOWFramesetSubgroupData + ld a, [wCurOWFrameDataOffset] + cp -1 + jr z, .next_subgroup + ld a, [wumLoadedFramesetSubgroups] inc a - ld [wd322], a - call Func_8050c - call Func_805c1 -.asm_804cf + ld [wumLoadedFramesetSubgroups], a + call LoadOWFrameTiles + call StoreOWFramesetSubgroup +.next_subgroup inc c ld a, c - cp 3 - jr c, .asm_804b5 + cp NUM_OW_FRAMESET_SUBGROUPS + jr c, .loop_subgroups pop bc pop hl ret ; 0x804d8 -Func_804d8: ; 804d8 (20:44d8) - ld a, [wd322] +; for each of the loaded frameset subgroups +; load their tiles and advance their durations +DoLoadedFramesetSubgroupsFrame: ; 804d8 (20:44d8) + ld a, [wumLoadedFramesetSubgroups] or a ret z - ld c, $00 -.asm_804df - call Func_805aa - cp $ff - jr z, .asm_804ec - call Func_8050c - call Func_805c1 -.asm_804ec + ld c, 0 +.loop_subgroups + call LoadOWFramesetSubgroup + cp -1 + jr z, .next_subgroup + call LoadOWFrameTiles + call StoreOWFramesetSubgroup +.next_subgroup inc c ld a, c - cp $03 - jr c, .asm_804df + cp NUM_OW_FRAMESET_SUBGROUPS + jr c, .loop_subgroups ret ; 0x804f3 -; c added to hl -Func_804f3: ; 804f3 (20:44f3) +; from subgroup in register c, get +; from OW frameset in hl its corresponding +; data offset and duration +GetOWFramesetSubgroupData: ; 804f3 (20:44f3) push hl push bc push hl - ld b, $00 + ld b, $0 add hl, bc ld c, [hl] pop hl add hl, bc - ld a, [hl] - cp $ff - jr z, .asm_80509 - ld a, c - ld [wd320], a + ld a, [hl] ; beginning of OW_FRAME + cp -1 + jr z, .end_of_list ; skip if it's end of list + ld a, c ; store its addr offset + ld [wCurOWFrameDataOffset], a xor a - ld [wd321], a -.asm_80509 + ld [wCurOWFrameDuration], a +.end_of_list pop bc pop hl ret ; 0x8050c -Func_8050c: ; 8050c (20:450c) - ld a, [wd321] +; if wCurOWFrameDuration == 0, processes next frame for OW map +; by loading the tiles corresponding to current frame +; if wCurOWFrameDuration != 0, then simply decrements it and returns +LoadOWFrameTiles: ; 8050c (20:450c) + ld a, [wCurOWFrameDuration] or a - jr z, .asm_80517 + jr z, .next_frame dec a - ld [wd321], a + ld [wCurOWFrameDuration], a ret -.asm_80517 +.next_frame push hl push de push bc - ; add wd320 to pointer in wd318 - ld a, [wd320] + ; add wCurOWFrameDataOffset to pointer in wCurMapOWFrameset + ld a, [wCurOWFrameDataOffset] ld c, a - ld a, [wd318] + ld a, [wCurMapOWFrameset] add c ld l, a - ld a, [wd318 + 1] + ld a, [wCurMapOWFrameset + 1] adc 0 ld h, a ld a, [hl] - ld [wd321], a -.asm_8052d - call .Func_8055c - ld de, $8 - add hl, de + ld [wCurOWFrameDuration], a +.loop_ow_frames + call .LoadTile + ld de, OW_FRAME_STRUCT_SIZE + add hl, de ; next frame data ld a, c add e ld c, a + ; OW frames with 0 duration are processed + ; at the same time as the previous frame data ld a, [hl] or a - jr z, .asm_8052d + jr z, .loop_ow_frames cp -1 ld a, c - ld [wd320], a - jr nz, .asm_80558 + ld [wCurOWFrameDataOffset], a + jr nz, .done + +; there's no more frames to process for this map +; reset the frame data offset pop bc push bc - ld a, [wd321] + ld a, [wCurOWFrameDuration] push af - ld a, [wd318] + ld a, [wCurMapOWFrameset] ld l, a - ld a, [wd318 + 1] + ld a, [wCurMapOWFrameset + 1] ld h, a - call Func_804f3 + call GetOWFramesetSubgroupData pop af - ld [wd321], a -.asm_80558 + ld [wCurOWFrameDuration], a + +.done pop bc pop de pop hl ret -.Func_8055c +; load a single tile specified +; by the OW frame data pointed by hl +.LoadTile push hl push bc push de ldh a, [hBankVRAM] push af inc hl - ld a, [hli] + ld a, [hli] ; tile number xor $80 ld e, a - ld a, [hli] + ld a, [hli] ; VRAM bank ; get tile offset of register e ; and load its address in de @@ -982,27 +1000,28 @@ Func_8050c: ; 8050c (20:450c) add hl, hl ; *4 add hl, hl ; *8 add hl, hl ; *16 - ld de, v0Tiles1 + ld de, v0Tiles1 ; or v1Tiles1 add hl, de ld e, l ld d, h pop hl - ld a, [hli] - add $20 + ld a, [hli] ; bank of tileset + add BANK(MapOWFramesetPointers) ld [wTempPointerBank], a - ld a, [hli] + ld a, [hli] ; tileset addr lo byte ld c, a - ld a, [hli] + ld a, [hli] ; tileset addr hi byte ld b, a - ld a, [hli] - ld h, [hl] + ld a, [hli] ; tile number lo byte + ld h, [hl] ; tile number hi byte ld l, a add hl, hl ; *2 add hl, hl ; *4 add hl, hl ; *8 add hl, hl ; *16 add hl, bc + ; copy tile from the tileset to VRAM addr lb bc, 1, TILE_SIZE call CopyGfxDataFromTempBank pop af @@ -1013,12 +1032,12 @@ Func_8050c: ; 8050c (20:450c) ret ; 0x8059a -; fills wd31a with $ff -Func_8059a: ; 8059a (20:459a) +; fills wOWFramesetSubgroups with $ff +ClearOWFramesetSubgroups: ; 8059a (20:459a) push hl push bc - ld hl, wd31a - ld c, 3 * 2 + ld hl, wOWFramesetSubgroups + ld c, NUM_OW_FRAMESET_SUBGROUPS * 2 ld a, $ff .loop ld [hli], a @@ -1029,312 +1048,46 @@ Func_8059a: ; 8059a (20:459a) ret ; 0x805aa -; copies wd31a + 2*c -; to wd320 and wd321 -Func_805aa: ; 805aa (20:45aa) +; copies wOWFramesetSubgroups + 2*c +; to wCurOWFrameDataOffset and wCurOWFrameDuration +; also returns its current duration +LoadOWFramesetSubgroup: ; 805aa (20:45aa) push hl push bc - ld hl, wd31a + ld hl, wOWFramesetSubgroups sla c ld b, $00 add hl, bc ld a, [hli] - ld [wd320], a + ld [wCurOWFrameDataOffset], a push af ld a, [hl] - ld [wd321], a + ld [wCurOWFrameDuration], a pop af pop bc pop hl ret ; 0x805c1 -; copies wd320 and wd321 -; to wd31a + 2*c -Func_805c1: ; 805c1 (20:45c1) +; copies wCurOWFrameDataOffset and wCurOWFrameDuration +; to wOWFramesetSubgroups + 2*c +StoreOWFramesetSubgroup: ; 805c1 (20:45c1) push hl push bc - ld hl, wd31a + ld hl, wOWFramesetSubgroups sla c ld b, $00 add hl, bc - ld a, [wd320] + ld a, [wCurOWFrameDataOffset] ld [hli], a - ld a, [wd321] + ld a, [wCurOWFrameDuration] ld [hl], a pop bc pop hl ret ; 0x805d6 -Data_805d6: ; 805d6 (20:45d6) -; non-cgb, cgb - dw Data_80662, Data_80696 ; OVERWORLD_MAP - dw Data_80742, Data_80742 ; MASON_LABORATORY - dw Data_80786, Data_8080a ; DECK_MACHINE_ROOM - dw Data_8055e, Data_8055e ; ISHIHARAS_HOUSE - dw Data_8055e, Data_8055e ; FIGHTING_CLUB_ENTRANCE - dw Data_8055e, Data_8055e ; FIGHTING_CLUB_LOBBY - dw Data_8055e, Data_8055e ; FIGHTING_CLUB - dw Data_8055e, Data_8055e ; ROCK_CLUB_ENTRANCE - dw Data_8055e, Data_8055e ; ROCK_CLUB_LOBBY - dw Data_8055e, Data_8055e ; ROCK_CLUB - dw Data_8055e, Data_8055e ; WATER_CLUB_ENTRANCE - dw Data_8055e, Data_8055e ; WATER_CLUB_LOBBY - dw Data_80996, Data_80996 ; WATER_CLUB - dw Data_8055e, Data_8055e ; LIGHTNING_CLUB_ENTRANCE - dw Data_8055e, Data_8055e ; LIGHTNING_CLUB_LOBBY - dw Data_80a5a, Data_80a5a ; LIGHTNING_CLUB - dw Data_8055e, Data_8055e ; GRASS_CLUB_ENTRANCE - dw Data_8055e, Data_8055e ; GRASS_CLUB_LOBBY - dw Data_8055e, Data_8055e ; GRASS_CLUB - dw Data_8055e, Data_8055e ; PSYCHIC_CLUB_ENTRANCE - dw Data_8055e, Data_8055e ; PSYCHIC_CLUB_LOBBY - dw Data_8055e, Data_8055e ; PSYCHIC_CLUB - dw Data_8055e, Data_8055e ; SCIENCE_CLUB_ENTRANCE - dw Data_8055e, Data_8055e ; SCIENCE_CLUB_LOBBY - dw Data_80b1e, Data_80b1e ; SCIENCE_CLUB - dw Data_8055e, Data_8055e ; FIRE_CLUB_ENTRANCE - dw Data_8055e, Data_8055e ; FIRE_CLUB_LOBBY - dw Data_8088e, Data_80912 ; FIRE_CLUB - dw Data_8055e, Data_8055e ; CHALLENGE_HALL_ENTRANCE - dw Data_8055e, Data_8055e ; CHALLENGE_HALL_LOBBY - dw Data_80b32, Data_80b32 ; CHALLENGE_HALL - dw Data_8055e, Data_8055e ; POKEMON_DOME_ENTRANCE - dw Data_8055e, Data_8055e ; POKEMON_DOME - dw Data_80b36, Data_80b36 ; HALL_OF_HONOR -; 0x8065e - -; \1 = unknown -; \2 = VRAM tile offset -; \3 = VRAM -; \4 = tileset -; \5 = tileset offset -macro_8055e: MACRO - db \1 - db \2 - db \3 - dbw BANK(\4) - BANK(Data_805d6), \4 + $2 - dw \5 -ENDM - -Data_8055e: ; 8055e (20:455e) - db $3, $3, $3 - db -1 ; end - -Data_80662: ; 80662 (20:4662) - db $3, $33, $33 - - macro_8055e 7, $f3, 0, OverworldMapTiles, $73 - macro_8055e 7, $f4, 0, OverworldMapTiles, $74 - macro_8055e 7, $f3, 0, OverworldMapTiles, $74 - macro_8055e 7, $f4, 0, OverworldMapTiles, $75 - macro_8055e 7, $f3, 0, OverworldMapTiles, $75 - macro_8055e 7, $f4, 0, OverworldMapTiles, $73 - db -1 ; end - -Data_80696: ; 80696 (20:4696) - db $3, $ab, $ab - - macro_8055e 4, $f3, 0, OverworldMapTiles, $73 - macro_8055e 4, $f4, 0, OverworldMapTiles, $74 - macro_8055e 4, $18, 1, OverworldMapTiles, $98 - macro_8055e 0, $19, 1, OverworldMapTiles, $99 - macro_8055e 0, $1a, 1, OverworldMapTiles, $9a - macro_8055e 0, $1b, 1, OverworldMapTiles, $9b - macro_8055e 0, $1c, 1, OverworldMapTiles, $9c - macro_8055e 4, $f3, 0, OverworldMapTiles, $74 - macro_8055e 4, $f4, 0, OverworldMapTiles, $75 - macro_8055e 4, $18, 1, OverworldMapTiles, $9d - macro_8055e 0, $19, 1, OverworldMapTiles, $9e - macro_8055e 0, $1a, 1, OverworldMapTiles, $9f - macro_8055e 0, $1b, 1, OverworldMapTiles, $a0 - macro_8055e 0, $1c, 1, OverworldMapTiles, $a1 - macro_8055e 7, $f3, 0, OverworldMapTiles, $75 - macro_8055e 7, $f4, 0, OverworldMapTiles, $73 - macro_8055e 4, $18, 1, OverworldMapTiles, $a2 - macro_8055e 0, $19, 1, OverworldMapTiles, $a3 - macro_8055e 0, $1a, 1, OverworldMapTiles, $a4 - macro_8055e 0, $1b, 1, OverworldMapTiles, $a5 - macro_8055e 0, $1c, 1, OverworldMapTiles, $a6 - db -1 ; end - -Data_80742: ; 80742 (20:4742) - db $3, $43, $43 - - macro_8055e 3, $dc, 0, MasonLaboratoryTilesetGfx, $5c - macro_8055e 0, $dd, 0, MasonLaboratoryTilesetGfx, $5d - macro_8055e 3, $de, 0, MasonLaboratoryTilesetGfx, $5e - macro_8055e 0, $df, 0, MasonLaboratoryTilesetGfx, $5f - macro_8055e 3, $dc, 0, MasonLaboratoryTilesetGfx, $60 - macro_8055e 0, $dd, 0, MasonLaboratoryTilesetGfx, $61 - macro_8055e 3, $de, 0, MasonLaboratoryTilesetGfx, $62 - macro_8055e 0, $df, 0, MasonLaboratoryTilesetGfx, $63 - db -1 ; end - -Data_80786: ; 80786 (20:4786) - db $3, $83, $83 - - macro_8055e 3, $dc, 0, MasonLaboratoryTilesetGfx, $5c - macro_8055e 0, $dd, 0, MasonLaboratoryTilesetGfx, $5d - macro_8055e 3, $de, 0, MasonLaboratoryTilesetGfx, $5e - macro_8055e 0, $df, 0, MasonLaboratoryTilesetGfx, $5f - macro_8055e 5, $e4, 0, MasonLaboratoryTilesetGfx, $64 - macro_8055e 0, $e5, 0, MasonLaboratoryTilesetGfx, $65 - macro_8055e 0, $e6, 0, MasonLaboratoryTilesetGfx, $66 - macro_8055e 0, $e7, 0, MasonLaboratoryTilesetGfx, $67 - macro_8055e 3, $dc, 0, MasonLaboratoryTilesetGfx, $60 - macro_8055e 0, $dd, 0, MasonLaboratoryTilesetGfx, $61 - macro_8055e 3, $de, 0, MasonLaboratoryTilesetGfx, $62 - macro_8055e 0, $df, 0, MasonLaboratoryTilesetGfx, $63 - macro_8055e 5, $e4, 0, MasonLaboratoryTilesetGfx, $68 - macro_8055e 0, $e5, 0, MasonLaboratoryTilesetGfx, $69 - macro_8055e 0, $e6, 0, MasonLaboratoryTilesetGfx, $6a - macro_8055e 0, $e7, 0, MasonLaboratoryTilesetGfx, $6b - db -1 ; end - -Data_8080a: ; 8080a (20:480a) - db $3, $83, $83 - - macro_8055e 3, $dc, 0, MasonLaboratoryTilesetGfx, $5c - macro_8055e 0, $dd, 0, MasonLaboratoryTilesetGfx, $5d - macro_8055e 3, $de, 0, MasonLaboratoryTilesetGfx, $5e - macro_8055e 0, $df, 0, MasonLaboratoryTilesetGfx, $5f - macro_8055e 5, $03, 1, MasonLaboratoryTilesetGfx, $83 - macro_8055e 0, $04, 1, MasonLaboratoryTilesetGfx, $84 - macro_8055e 0, $05, 1, MasonLaboratoryTilesetGfx, $85 - macro_8055e 0, $06, 1, MasonLaboratoryTilesetGfx, $86 - macro_8055e 3, $dc, 0, MasonLaboratoryTilesetGfx, $60 - macro_8055e 0, $dd, 0, MasonLaboratoryTilesetGfx, $61 - macro_8055e 3, $de, 0, MasonLaboratoryTilesetGfx, $62 - macro_8055e 0, $df, 0, MasonLaboratoryTilesetGfx, $63 - macro_8055e 5, $03, 1, MasonLaboratoryTilesetGfx, $87 - macro_8055e 0, $04, 1, MasonLaboratoryTilesetGfx, $88 - macro_8055e 0, $05, 1, MasonLaboratoryTilesetGfx, $89 - macro_8055e 0, $06, 1, MasonLaboratoryTilesetGfx, $8a - db -1 ; end - -Data_8088e: ; 8088e (20:488e) - db $3, $83, $83 - - macro_8055e 5, $9f, 0, FireClubTilesetGfx, $1f - macro_8055e 0, $a0, 0, FireClubTilesetGfx, $20 - macro_8055e 0, $a1, 0, FireClubTilesetGfx, $21 - macro_8055e 0, $a2, 0, FireClubTilesetGfx, $22 - macro_8055e 6, $a3, 0, FireClubTilesetGfx, $23 - macro_8055e 0, $a4, 0, FireClubTilesetGfx, $24 - macro_8055e 0, $a5, 0, FireClubTilesetGfx, $25 - macro_8055e 0, $a6, 0, FireClubTilesetGfx, $26 - macro_8055e 5, $9f, 0, FireClubTilesetGfx, $27 - macro_8055e 0, $a0, 0, FireClubTilesetGfx, $28 - macro_8055e 0, $a1, 0, FireClubTilesetGfx, $29 - macro_8055e 0, $a2, 0, FireClubTilesetGfx, $2a - macro_8055e 6, $a3, 0, FireClubTilesetGfx, $2b - macro_8055e 0, $a4, 0, FireClubTilesetGfx, $2c - macro_8055e 0, $a5, 0, FireClubTilesetGfx, $2d - macro_8055e 0, $a6, 0, FireClubTilesetGfx, $2e - db -1 ; end - -Data_80912: ; 80912 (20:4912) - db $3, $83, $83 - - macro_8055e 5, $bb, 0, FireClubTilesetGfx, $3b - macro_8055e 0, $bc, 0, FireClubTilesetGfx, $3c - macro_8055e 0, $bd, 0, FireClubTilesetGfx, $3d - macro_8055e 0, $be, 0, FireClubTilesetGfx, $3e - macro_8055e 6, $bf, 0, FireClubTilesetGfx, $3f - macro_8055e 0, $c0, 0, FireClubTilesetGfx, $40 - macro_8055e 0, $c1, 0, FireClubTilesetGfx, $41 - macro_8055e 0, $c2, 0, FireClubTilesetGfx, $42 - macro_8055e 5, $bb, 0, FireClubTilesetGfx, $43 - macro_8055e 0, $bc, 0, FireClubTilesetGfx, $44 - macro_8055e 0, $bd, 0, FireClubTilesetGfx, $45 - macro_8055e 0, $be, 0, FireClubTilesetGfx, $46 - macro_8055e 6, $bf, 0, FireClubTilesetGfx, $47 - macro_8055e 0, $c0, 0, FireClubTilesetGfx, $48 - macro_8055e 0, $c1, 0, FireClubTilesetGfx, $49 - macro_8055e 0, $c2, 0, FireClubTilesetGfx, $4a - db -1 ; end - -Data_80996: ; 80996 (20:4996) - db $3, $c3, $c3 - - macro_8055e 1, $e2, 0, WaterClubTilesetGfx, $62 - macro_8055e 1, $e3, 0, WaterClubTilesetGfx, $63 - macro_8055e 3, $e4, 0, WaterClubTilesetGfx, $64 - macro_8055e 0, $e5, 0, WaterClubTilesetGfx, $65 - macro_8055e 3, $e6, 0, WaterClubTilesetGfx, $66 - macro_8055e 0, $e7, 0, WaterClubTilesetGfx, $67 - macro_8055e 1, $e2, 0, WaterClubTilesetGfx, $68 - macro_8055e 1, $e3, 0, WaterClubTilesetGfx, $69 - macro_8055e 3, $e4, 0, WaterClubTilesetGfx, $6a - macro_8055e 0, $e5, 0, WaterClubTilesetGfx, $6b - macro_8055e 3, $e6, 0, WaterClubTilesetGfx, $6c - macro_8055e 0, $e7, 0, WaterClubTilesetGfx, $6d - macro_8055e 1, $e2, 0, WaterClubTilesetGfx, $62 - macro_8055e 1, $e3, 0, WaterClubTilesetGfx, $63 - macro_8055e 3, $e4, 0, WaterClubTilesetGfx, $64 - macro_8055e 0, $e5, 0, WaterClubTilesetGfx, $65 - macro_8055e 3, $e6, 0, WaterClubTilesetGfx, $66 - macro_8055e 0, $e7, 0, WaterClubTilesetGfx, $67 - macro_8055e 1, $e2, 0, WaterClubTilesetGfx, $6e - macro_8055e 1, $e3, 0, WaterClubTilesetGfx, $6f - macro_8055e 3, $e4, 0, WaterClubTilesetGfx, $70 - macro_8055e 0, $e5, 0, WaterClubTilesetGfx, $71 - macro_8055e 3, $e6, 0, WaterClubTilesetGfx, $72 - macro_8055e 0, $e7, 0, WaterClubTilesetGfx, $73 - db -1 ; end - -Data_80a5a: ; 80a5a (20:4a5a) - db $3, $c3, $c3 - - macro_8055e 10, $a2, 0, LightningClubTilesetGfx, $22 - macro_8055e 0, $a3, 0, LightningClubTilesetGfx, $23 - macro_8055e 0, $aa, 0, LightningClubTilesetGfx, $2a - macro_8055e 0, $ab, 0, LightningClubTilesetGfx, $2b - macro_8055e 4, $a5, 0, LightningClubTilesetGfx, $25 - macro_8055e 0, $a6, 0, LightningClubTilesetGfx, $26 - macro_8055e 0, $ac, 0, LightningClubTilesetGfx, $2c - macro_8055e 0, $ad, 0, LightningClubTilesetGfx, $2d - macro_8055e 4, $a7, 0, LightningClubTilesetGfx, $27 - macro_8055e 0, $a8, 0, LightningClubTilesetGfx, $28 - macro_8055e 0, $b0, 0, LightningClubTilesetGfx, $30 - macro_8055e 0, $b1, 0, LightningClubTilesetGfx, $31 - macro_8055e 10, $a2, 0, LightningClubTilesetGfx, $2a - macro_8055e 0, $a3, 0, LightningClubTilesetGfx, $2b - macro_8055e 0, $aa, 0, LightningClubTilesetGfx, $22 - macro_8055e 0, $ab, 0, LightningClubTilesetGfx, $23 - macro_8055e 4, $a5, 0, LightningClubTilesetGfx, $2d - macro_8055e 0, $a6, 0, LightningClubTilesetGfx, $2e - macro_8055e 0, $ac, 0, LightningClubTilesetGfx, $24 - macro_8055e 0, $ad, 0, LightningClubTilesetGfx, $25 - macro_8055e 4, $a7, 0, LightningClubTilesetGfx, $2f - macro_8055e 0, $a8, 0, LightningClubTilesetGfx, $30 - macro_8055e 0, $b0, 0, LightningClubTilesetGfx, $28 - macro_8055e 0, $b1, 0, LightningClubTilesetGfx, $29 - db -1 ; end - -Data_80b1e: ; 80b1e (20:4b1e) - db $3, $13, $13 - macro_8055e 11, $c7, 0, ScienceClubTilesetGfx, $47 - macro_8055e 11, $c7, 0, ScienceClubTilesetGfx, $48 - db -1 ; end - -Data_80b32: ; 80b32 (20:4b32) - db $3, $3, $3 - db -1 ; end - -Data_80b36: ; 80b36 (20:4b36) - db $3, $43, $43 - macro_8055e 11, $a4, 0, HallOfHonorTilesetGfx, $28 - macro_8055e 0, $a5, 0, HallOfHonorTilesetGfx, $29 - macro_8055e 0, $a6, 0, HallOfHonorTilesetGfx, $2a - macro_8055e 0, $a7, 0, HallOfHonorTilesetGfx, $2b - macro_8055e 11, $a4, 0, HallOfHonorTilesetGfx, $2c - macro_8055e 0, $a5, 0, HallOfHonorTilesetGfx, $2d - macro_8055e 0, $a6, 0, HallOfHonorTilesetGfx, $2e - macro_8055e 0, $a7, 0, HallOfHonorTilesetGfx, $2f - db -1 ; end +INCLUDE "data/map_ow_framesets.asm" ; clears wd323 Func_80b7a: ; 80b7a (20:4b7a) diff --git a/src/engine/home.asm b/src/engine/home.asm index 987d900..b91dbae 100644 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -10577,9 +10577,9 @@ Func_380e: ; 380e (0:380e) call BankswitchROM call Func_1c610 call Func_3cb4 - ld a, BANK(Func_804d8) + ld a, BANK(DoLoadedFramesetSubgroupsFrame) call BankswitchROM - call Func_804d8 + call DoLoadedFramesetSubgroupsFrame call UpdateRNGSources pop af call BankswitchROM @@ -11689,9 +11689,9 @@ Func_3e31: ; 3e31 (0:3e31) ldh a, [hBankROM] push af call Func_3cb4 - ld a, BANK(Func_804d8) + ld a, BANK(DoLoadedFramesetSubgroupsFrame) call BankswitchROM - call Func_804d8 + call DoLoadedFramesetSubgroupsFrame pop af call BankswitchROM ret diff --git a/src/wram.asm b/src/wram.asm index 8ce82ae..dc0e91d 100644 --- a/src/wram.asm +++ b/src/wram.asm @@ -2180,19 +2180,27 @@ wTempBackgroundPalettesCGB:: ; d297 ds $41 -wd318:: ; d318 +; pointer to the data of current map OW frameset +wCurMapOWFrameset:: ; d318 ds $2 -wd31a:: ; d31a - ds 3 * $2 +; stored data for each OW frameset subgroup +; has frame data offset and duration +wOWFramesetSubgroups:: ; d31a + ds NUM_OW_FRAMESET_SUBGROUPS * $2 -wd320:: ; d320 +; address offset of current OW frame +; relative to wCurMapOWFrameset +wCurOWFrameDataOffset:: ; d320 ds $1 -wd321:: ; d321 +; duration of the current map OW frame +wCurOWFrameDuration:: ; d321 ds $1 -wd322:: ; d322 +; number of valid subgroups +; that are currently loaded in wOWFramesetSubgroups +wumLoadedFramesetSubgroups:: ; d322 ds $1 wd323:: ; d323 |