diff options
author | camthesaxman <cameronghall@cox.net> | 2017-07-14 17:24:36 -0500 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-07-14 17:24:36 -0500 |
commit | 48407f4c37e39f2792e469ee18ab743b01f84316 (patch) | |
tree | 5008848b8444492cae7b4825eb8d885ac4df128e /src | |
parent | a0e590b739a2bdd8e76c004ae60662bd81d33ca9 (diff) |
decompile sub_80FA8EC - sub_80FAB60
Diffstat (limited to 'src')
-rw-r--r-- | src/region_map.c | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/src/region_map.c b/src/region_map.c new file mode 100644 index 000000000..301c3c082 --- /dev/null +++ b/src/region_map.c @@ -0,0 +1,155 @@ +#include "global.h" +#include "palette.h" +#include "sprite.h" + +struct UnknownStruct1 +{ + u8 filler0[0x14]; + u16 unk14; + u8 unk16; + u8 filler17[1]; + u8 (*unk18)(void); + struct Sprite *unk1C; + struct Sprite *unk20; + u8 filler24[0x30]; + u16 unk54; + u16 unk56; + u16 unk58; + u16 unk5A; + s16 unk5C; + s16 unk5E; + u8 filler60[4]; + u16 unk64; + u16 unk66; + u8 filler68[8]; + u16 unk70; + u16 unk72; + u16 unk74; + u16 unk76; + u8 unk78; + u8 unk79; + u8 unk7A; + u8 filler7B[3]; + u8 unk7E; + u8 filler7F[0x101]; + u8 unk180[0x100]; + u8 unk280[0x100]; +}; + +extern struct UnknownStruct1 *gUnknown_020388CC; + +const u16 gPokenavCursor_Pal[] = INCBIN_U16("graphics/pokenav/cursor.gbapal"); +const u8 gUnknown_083E5AF0[] = INCBIN_U8("graphics/pokenav/cursor_small.4bpp.lz"); +const u8 gUnknown_083E5B34[] = INCBIN_U8("graphics/pokenav/cursor_large.4bpp.lz"); +const u16 gRegionMapBrendanIconPalette[] = INCBIN_U16("graphics/pokenav/brendan_icon.gbapal"); +const u8 gRegionMapBrendanIconTiles[] = INCBIN_U8("graphics/pokenav/brendan_icon.4bpp"); +const u16 gRegionMapMayIconPalette[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal"); +const u8 gRegionMapMayIconTiles[] = INCBIN_U8("graphics/pokenav/may_icon.4bpp"); +const u16 gUnknown_083E5D60[] = INCBIN_U16("graphics/pokenav/region_map.gbapal"); +const u8 gUnknown_083E5DA0[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz"); +const u8 gUnknown_083E6B04[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz"); + +void sub_80FA904(struct UnknownStruct1 *, u8); +bool8 sub_80FA940(void); +u8 sub_80FAB78(void); +u8 sub_80FAD04(void); +void sub_80FB170(); +void sub_80FB260(void); +void sub_80FB32C(void); +u16 sub_80FB758(); +u16 sub_80FB9C0(u16); +void sub_80FBA18(); +void sub_80FBFB4(); + +void sub_80FA8EC(struct UnknownStruct1 *a, u8 b) +{ + sub_80FA904(a, b); + while (sub_80FA940()) + ; +} + +void sub_80FA904(struct UnknownStruct1 *a, u8 b) +{ + gUnknown_020388CC = a; + gUnknown_020388CC->unk79 = 0; + gUnknown_020388CC->unk78 = b; + gUnknown_020388CC->unk18 = (b == 0) ? sub_80FAB78 : sub_80FAD04; +} + +bool8 sub_80FA940(void) +{ + switch (gUnknown_020388CC->unk79) + { + case 0: + LZ77UnCompVram(gUnknown_083E5DA0, (void *)(VRAM + 0x8000)); + break; + case 1: + LZ77UnCompVram(gUnknown_083E6B04, (void *)(VRAM + 0xE000)); + break; + case 2: + LoadPalette(gUnknown_083E5D60, 0x70, 0x60); // Why isn't this the right size? + break; + case 3: + LZ77UnCompWram(gUnknown_083E5AF0, gUnknown_020388CC->unk180); + break; + case 4: + LZ77UnCompWram(gUnknown_083E5B34, gUnknown_020388CC->unk280); + break; + case 5: + sub_80FB32C(); + gUnknown_020388CC->unk74 = gUnknown_020388CC->unk54; + gUnknown_020388CC->unk76 = gUnknown_020388CC->unk56; + gUnknown_020388CC->unk16 = sub_80FB758(gUnknown_020388CC->unk14); + gUnknown_020388CC->unk14 = sub_80FB9C0(gUnknown_020388CC->unk14); + sub_80FBFB4(gUnknown_020388CC, gUnknown_020388CC->unk14, 16); + break; + case 6: + if (gUnknown_020388CC->unk78 == 0) + { + sub_80FB170(0, 0, 0, 0, 0x100, 0x100, 0); + } + else + { + gUnknown_020388CC->unk5C = gUnknown_020388CC->unk54 * 8 - 0x34; + gUnknown_020388CC->unk5E = gUnknown_020388CC->unk56 * 8 - 0x44; + gUnknown_020388CC->unk64 = gUnknown_020388CC->unk54; + gUnknown_020388CC->unk66 = gUnknown_020388CC->unk56; + sub_80FB170(gUnknown_020388CC->unk5C, gUnknown_020388CC->unk5E, 0x38, 0x48, 0x80, 0x80, 0); + } + break; + case 7: + sub_80FBA18(); + sub_80FB260(); + gUnknown_020388CC->unk1C = NULL; + gUnknown_020388CC->unk20 = NULL; + gUnknown_020388CC->unk7A = 0; + gUnknown_020388CC->unk7E = 0; + REG_BG2CNT = 0xBC8A; + gUnknown_020388CC->unk79++; + default: + return FALSE; + } + gUnknown_020388CC->unk79++; + return TRUE; +} + +void sub_80FAB10(void) +{ + if (gUnknown_020388CC->unk1C != NULL) + { + DestroySprite(gUnknown_020388CC->unk1C); + FreeSpriteTilesByTag(gUnknown_020388CC->unk58); + FreeSpritePaletteByTag(gUnknown_020388CC->unk5A); + } + if (gUnknown_020388CC->unk20 != NULL) + { + DestroySprite(gUnknown_020388CC->unk20); + FreeSpriteTilesByTag(gUnknown_020388CC->unk70); + FreeSpritePaletteByTag(gUnknown_020388CC->unk72); + } +} + +u8 sub_80FAB60(void) +{ + return gUnknown_020388CC->unk18(); +} |