Function16c000: ; 16c000 ; unreferenced ; Only for CGB ld a, [hCGB] and a ret z ; Only do this once per boot cycle ld a, [hFFEA] and a ret z ; Set some flag, preserving the old state ld a, [wcfbe] push af set 7, a ld [wcfbe], a ; Do stuff call MobileSystemSplashScreen_InitGFX ; Load GFX farcall SetRAMStateForMobile farcall EnableMobile call .RunJumptable farcall DisableMobile ; Prevent this routine from running again ; until the next time the syatem is turned on xor a ld [hFFEA], a ; Restore the flag state pop af ld [wcfbe], a ret ; 16c031 .RunJumptable: ; 16c031 xor a ld [wJumptableIndex], a ld [wcf64], a ld [wd002], a ld [wd003], a .loop call DelayFrame farcall Function10635c ld a, [wd002] ld hl, .Jumptable rst JumpTable call Function16cb2e call Function16cbae ld a, [wd002] cp $ff jr nz, .loop ret ; 16c05c .Jumptable: ; 16c05c dw .init dw Function16c0ba dw Function16c089 dw Function16c09e dw Function16c0a8 dw Function16c0dc dw Function16c0ec dw Function16c0ba dw Function16c0ca dw Function16c0dc dw Function16c0ec dw .quit ; 16c074 .init ; 16c074 ld a, [wcf64] and a ret z ld [wd002], a xor a ld [wd003], a ret ; 16c081 .quit ; 16c081 push af ld a, $ff ld [wd002], a pop af ret ; 16c089 Function16c089: ; 16c089 ld a, $1 ld [Buffer2], a ld [wd1f1], a xor a ld [hWY], a call Function16c0fa ld a, [wd002] ld [wcf64], a ret ; 16c09e Function16c09e: ; 16c09e ld a, [wcf64] cp $4 ret nz call Function16c0fa ret ; 16c0a8 Function16c0a8: ; 16c0a8 xor a ld [Buffer2], a ld [wd1f1], a call ClearSprites ld a, $90 ld [hWY], a call Function16c0fa ret ; 16c0ba Function16c0ba: ; 16c0ba call Function16c943 push af ld a, [wd003] inc a ld [wd003], a pop af call c, Function16c0fa ret ; 16c0ca Function16c0ca: ; 16c0ca ld a, [wd003] cp $28 push af ld a, [wd003] inc a ld [wd003], a pop af call z, Function16c0fa ret ; 16c0dc Function16c0dc: ; 16c0dc call Function16ca11 push af ld a, [wd003] inc a ld [wd003], a pop af call c, Function16c0fa ret ; 16c0ec Function16c0ec: ; 16c0ec call ClearBGPalettes call ClearScreen push af ld a, $ff ld [wd002], a pop af ret ; 16c0fa Function16c0fa: ; 16c0fa push af ld a, [wd002] inc a ld [wd002], a xor a ld [wd003], a pop af ret ; 16c108 MobileSystemSplashScreen_InitGFX: ; 16c108 call DisableLCD ld hl, VTiles2 ld de, .Tiles lb bc, BANK(.Tiles), $68 call Get2bpp call .LoadPals call .LoadTileMap call .LoadAttrMap hlbgcoord 0, 0 call Function16cc73 call Function16cc02 xor a ld [hBGMapMode], a call EnableLCD ret ; 16c130 .LoadPals: ; 16c130 ld de, UnknBGPals ld hl, UnknownMobilePalettes_16c903 ld bc, 8 ld a, $5 call FarCopyWRAM farcall ApplyPals ret ; 16c145 .LoadTileMap: ; 16c145 hlcoord 0, 0 ld bc, 20 xor a call ByteFill ld hl, .TileMap decoord 0, 1 ld bc, $0154 call CopyBytes ret ; 16c15c .LoadAttrMap: ; 16c15c hlcoord 0, 0, AttrMap ld bc, SCREEN_WIDTH xor a call ByteFill ld hl, .AttrMap decoord 0, 1, AttrMap ld bc, 17 * SCREEN_WIDTH call CopyBytes ret ; 16c173 .Tiles: INCBIN "gfx/mobile/mobile_splash.2bpp" .TileMap: INCBIN "gfx/mobile/mobile_splash.tilemap" .AttrMap: INCBIN "gfx/mobile/mobile_splash.attrmap" UnknownMobilePalettes_16c903: ; 16c903 INCLUDE "gfx/unknown/16c903.pal" ; 16c943 Function16c943: ; 16c943 ld a, [wd003] and a jr nz, .asm_16c95e ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a ld a, $ff ld bc, $0008 ld hl, UnknBGPals call ByteFill pop af ld [rSVBK], a .asm_16c95e ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a ld e, $0 ld a, $0 .asm_16c969 ld hl, UnknownMobilePalettes_16c903 call Function16cab6 call Function16cabb ld d, a ld hl, UnknBGPals call Function16cab6 call Function16cabb cp d jr z, .asm_16c991 ld b, $1 .asm_16c981 dec a cp d jr z, .asm_16c988 dec b jr nz, .asm_16c981 .asm_16c988 ld hl, UnknBGPals call Function16cab6 call Function16cadc .asm_16c991 ld hl, UnknownMobilePalettes_16c903 call Function16cab6 call Function16cad8 ld d, a ld hl, UnknBGPals call Function16cab6 call Function16cad8 cp d jr z, .asm_16c9b9 ld b, $1 .asm_16c9a9 dec a cp d jr z, .asm_16c9b0 dec b jr nz, .asm_16c9a9 .asm_16c9b0 ld hl, UnknBGPals call Function16cab6 call Function16cb08 .asm_16c9b9 ld hl, UnknownMobilePalettes_16c903 call Function16cab6 call Function16cac4 ld d, a ld hl, UnknBGPals call Function16cab6 call Function16cac4 cp d jr z, .asm_16c9e1 ld b, $1 .asm_16c9d1 dec a cp d jr z, .asm_16c9d8 dec b jr nz, .asm_16c9d1 .asm_16c9d8 ld hl, UnknBGPals call Function16cab6 call Function16cae8 .asm_16c9e1 inc e inc e ld a, e cp $8 jr nz, .asm_16c969 farcall ApplyPals call SetPalettes ld a, [rSVBK] push af ld a, $1 ld [rSVBK], a ld a, [wd003] cp $1f jr z, .asm_16ca09 pop af ld [rSVBK], a ld e, $0 pop af ld [rSVBK], a and a ret .asm_16ca09 pop af ld [rSVBK], a pop af ld [rSVBK], a scf ret ; 16ca11 Function16ca11: ; 16ca11 ld a, [wd003] and a jr nz, .asm_16ca1d farcall ApplyPals .asm_16ca1d ld a, [rSVBK] push af ld a, $5 ld [rSVBK], a ld e, $0 ld a, $0 .asm_16ca28 ld hl, UnknBGPals call Function16cab6 call Function16cabb cp $1f jr z, .asm_16ca48 ld b, $1 .asm_16ca37 inc a cp $1f jr z, .asm_16ca3f dec b jr nz, .asm_16ca37 .asm_16ca3f ld hl, UnknBGPals call Function16cab6 call Function16cadc .asm_16ca48 ld hl, UnknBGPals call Function16cab6 call Function16cad8 cp $1f jr z, .asm_16ca68 ld b, $1 .asm_16ca57 inc a cp $1f jr z, .asm_16ca5f dec b jr nz, .asm_16ca57 .asm_16ca5f ld hl, UnknBGPals call Function16cab6 call Function16cb08 .asm_16ca68 ld hl, UnknBGPals call Function16cab6 call Function16cac4 cp $1f jr z, .asm_16ca88 ld b, $1 .asm_16ca77 inc a cp $1f jr z, .asm_16ca7f dec b jr nz, .asm_16ca77 .asm_16ca7f ld hl, UnknBGPals call Function16cab6 call Function16cae8 .asm_16ca88 inc e inc e ld a, e cp $8 jr nz, .asm_16ca28 farcall ApplyPals call SetPalettes ld a, [rSVBK] push af ld a, $1 ld [rSVBK], a ld a, [wd003] cp $1f jr z, .asm_16caae pop af ld [rSVBK], a pop af ld [rSVBK], a and a ret .asm_16caae pop af ld [rSVBK], a pop af ld [rSVBK], a scf ret ; 16cab6 Function16cab6: ; 16cab6 ld b, $0 ld c, e add hl, bc ret ; 16cabb Function16cabb: ; 16cabb inc hl ld a, [hl] srl a srl a and $1f ret ; 16cac4 Function16cac4: ; 16cac4 inc hl ld a, [hld] and $3 ld b, a ld a, [hl] sla a rl b sla a rl b sla a rl b ld a, b ret ; 16cad8 Function16cad8: ; 16cad8 ld a, [hl] and $1f ret ; 16cadc Function16cadc: ; 16cadc sla a sla a ld b, a inc hl ld a, [hl] and $83 or b ld [hl], a ret ; 16cae8 Function16cae8: ; 16cae8 ld c, a srl a srl a srl a ld b, a inc hl ld a, [hl] and $fc or b ld [hld], a ld a, c sla a sla a sla a sla a sla a ld b, a ld a, [hl] and $1f or b ld [hl], a ret ; 16cb08 Function16cb08: ; 16cb08 ld b, a ld a, [hl] and $e0 or b ld [hl], a ret ; 16cb0f Function16cb0f: ; 16cb0f xor a ld [Buffer1], a ld [Buffer2], a xor a ld [wd1ec], a ld a, $70 ld [wd1ee], a ld a, $4 ld [wd1ed], a ld a, $a0 ld [wd1ef], a xor a ld [wd1f0], a ret ; 16cb2e Function16cb2e: ; 16cb2e ld a, [Buffer2] and a ret z call Function16cb40 ld hl, Unknown_16cb86 ld de, Sprites call Function16cb5d ret ; 16cb40 Function16cb40: ; 16cb40 ld hl, wd1ec inc [hl] ld a, [hl] cp $18 ret c xor a ld [hl], a ld a, [wd1ef] cp $a0 jr nz, .asm_16cb57 ld a, $a7 ld [wd1ef], a ret .asm_16cb57 ld a, $a0 ld [wd1ef], a ret ; 16cb5d Function16cb5d: ; 16cb5d ld a, [hli] and a ret z .asm_16cb60 push af ld a, [wd1ee] add [hl] add $10 ld [de], a inc hl inc de ld a, [wd1ed] add [hl] add $8 ld [de], a inc hl inc de ld a, [wd1ef] add [hl] ld [de], a inc hl inc de ld a, [wd1f0] or [hl] ld [de], a inc hl inc de pop af dec a jr nz, .asm_16cb60 ret ; 16cb86 Unknown_16cb86: db 7 db 0, 0, 0, 1 db 8, 0, 1, 1 db 8, 8, 2, 0 db 8, 16, 3, 0 db 16, 0, 4, 1 db 16, 8, 5, 0 db 16, 16, 6, 0 ; 16cba3 Function16cba3: ; 16cba3 xor a ld [wd1f1], a ld [wd1f2], a ld [wd1f3], a ret ; 16cbae Function16cbae: ; 16cbae ld a, [wd1f1] and a ret z call Function16cbba call Function16cbd1 ret ; 16cbba Function16cbba: ; 16cbba ld hl, wd1f2 inc [hl] ld a, [hl] cp $c ret c xor a ld [hl], a ld a, [wd1f3] inc a cp $4 jr c, .asm_16cbcd xor a .asm_16cbcd ld [wd1f3], a ret ; 16cbd1 Function16cbd1: ; 16cbd1 ld a, [wd1f3] ld c, a ld b, 0 ld hl, Unknown_16cbfb add hl, bc ld a, [hl] ld bc, 2 ld hl, Unknown_16cfa3 call AddNTimes ld de, UnknBGPals + 1 palettes + 4 ld bc, 2 ld a, $5 call FarCopyWRAM farcall ApplyPals ld a, $1 ld [hCGBPalUpdate], a ret ; 16cbfb Unknown_16cbfb: db 0, 1, 2, 1, 0, 1, 2 ; 16cc02 Function16cc02: ; 16cc02 call Function16cc18 call Function16cc49 call Function16cc62 call Function16cc25 call Function16cc6e call Function16cb0f call Function16cba3 ret ; 16cc18 Function16cc18: ; 16cc18 ld hl, VTiles1 ld de, GFX_16cca3 lb bc, BANK(GFX_16cca3), $2e call Get2bpp ret ; 16cc25 Function16cc25: ; 16cc25 ld hl, Unknown_16cfa9 ld de, UnknBGPals + 1 palettes call .CopyPal ld hl, Unknown_16cfb1 ld de, UnknOBPals call .CopyPal ld hl, Unknown_16cfb9 ld de, UnknOBPals + 1 palettes call .CopyPal ret ; 16cc41 .CopyPal: ; 16cc41 ld bc, 1 palettes ld a, $5 jp FarCopyWRAM ; 16cc49 Function16cc49: ; 16cc49 hlcoord 4, 15 ld a, $80 call Function16cc5a hlcoord 4, 16 ld a, $90 call Function16cc5a ret ; 16cc5a Function16cc5a: ; 16cc5a ld c, $10 .asm_16cc5c ld [hli], a inc a dec c jr nz, .asm_16cc5c ret ; 16cc62 Function16cc62: ; 16cc62 hlcoord 0, 15, AttrMap ld bc, $0028 ld a, $1 call ByteFill ret ; 16cc6e Function16cc6e: ; 16cc6e hlbgcoord 0, 0, VBGMap1 jr Function16cc73 Function16cc73: ld a, [rVBK] push af ld a, $0 ld [rVBK], a push hl decoord 0, 0 call Function16cc90 pop hl ld a, $1 ld [rVBK], a decoord 0, 0, AttrMap call Function16cc90 pop af ld [rVBK], a ret ; 16cc90 Function16cc90: ; 16cc90 ld bc, $1214 .asm_16cc93 push bc .asm_16cc94 ld a, [de] inc de ld [hli], a dec c jr nz, .asm_16cc94 ld bc, $000c add hl, bc pop bc dec b jr nz, .asm_16cc93 ret ; 16cca3 GFX_16cca3: INCBIN "gfx/unknown/16cca3.2bpp" Unknown_16cfa3: RGB 31, 31, 31 RGB 25, 27, 29 RGB 16, 19, 25 Unknown_16cfa9: RGB 31, 31, 31 RGB 25, 27, 29 RGB 31, 31, 31 RGB 07, 07, 07 Unknown_16cfb1: RGB 31, 31, 31 RGB 13, 09, 18 RGB 26, 21, 16 RGB 07, 07, 07 Unknown_16cfb9: RGB 31, 31, 31 RGB 18, 05, 02 RGB 27, 11, 12 RGB 07, 07, 07 ; 16cfc1