slot_machine nonmatching sub_8141198

This commit is contained in:
PikalaxALT
2019-05-24 18:57:01 -04:00
parent f111acf92a
commit 36fc72f25e
4 changed files with 504 additions and 369 deletions
-291
View File
@@ -5,297 +5,6 @@
.text
thumb_func_start sub_8141198
sub_8141198: @ 8141198
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x14
adds r7, r0, 0
mov r8, r1
ldrb r6, [r7]
cmp r6, 0x1
beq _081411D0
cmp r6, 0x1
bgt _081411B4
cmp r6, 0
beq _081411C2
b _08141450
_081411B4:
cmp r6, 0x2
bne _081411BA
b _081413E4
_081411BA:
cmp r6, 0x3
bne _081411C0
b _08141436
_081411C0:
b _08141450
_081411C2:
movs r0, 0x1
negs r0, r0
movs r1, 0x10
movs r2, 0
bl BlendPalettes
b _0814142E
_081411D0:
movs r0, 0
bl SetVBlankCallback
bl ResetSpriteData
bl FreeAllSpritePalettes
movs r1, 0xE0
lsls r1, 19
movs r2, 0x80
lsls r2, 3
movs r0, 0
movs r3, 0x1
bl RequestDma3Fill
movs r1, 0xC0
lsls r1, 19
movs r0, 0
movs r2, 0x20
movs r3, 0x1
bl RequestDma3Fill
ldr r1, _0814139C @ =0x0600c000
movs r0, 0
movs r2, 0x20
movs r3, 0x1
bl RequestDma3Fill
movs r0, 0
movs r1, 0
bl SetGpuReg
bl sub_80F6C14
movs r0, 0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _081413A0 @ =gUnknown_8466B10
movs r0, 0
movs r2, 0x4
bl InitBgsFromTemplates
ldr r0, _081413A4 @ =gUnknown_8466B20
bl InitWindows
ldr r1, _081413A8 @ =0x0000205c
add r1, r8
movs r0, 0x3
bl SetBgTilemapBuffer
movs r4, 0x20
str r4, [sp]
str r4, [sp, 0x4]
movs r0, 0x3
movs r1, 0
movs r2, 0
movs r3, 0
bl FillBgTilemapBufferRect_Palette0
movs r0, 0x3
bl CopyBgTilemapBufferToVram
bl reset_temp_tile_data_buffers
ldr r1, _081413AC @ =gUnknown_84659D0
movs r5, 0
str r5, [sp]
movs r0, 0x2
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _081413B0 @ =gUnknown_846653C
str r5, [sp]
movs r0, 0x2
movs r2, 0
movs r3, 0xC0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _081413B4 @ =0x0000185c
add r1, r8
movs r0, 0x2
bl SetBgTilemapBuffer
ldr r1, _081413B8 @ =gUnknown_84661D4
movs r0, 0x2
movs r2, 0
movs r3, 0
bl CopyToBgTilemapBuffer
movs r0, 0x2
bl CopyBgTilemapBufferToVram
ldr r0, _081413BC @ =gUnknown_8465930
movs r1, 0
movs r2, 0xA0
bl LoadPalette
ldr r0, _081413C0 @ =gUnknown_84664BC
movs r1, 0x50
movs r2, 0x20
bl LoadPalette
ldr r0, _081413C4 @ =gUnknown_84665C0
movs r1, 0x70
movs r2, 0x60
bl LoadPalette
ldr r1, _081413C8 @ =0x00007fde
add r0, sp, 0xC
strh r1, [r0]
movs r1, 0
movs r2, 0x2
bl LoadPalette
movs r0, 0
movs r1, 0xA
movs r2, 0xD0
bl LoadUserWindowBorderGfx
movs r0, 0
movs r1, 0x1
movs r2, 0xF0
bl sub_814FDA0
ldr r1, _081413CC @ =0x0000085c
add r1, r8
movs r0, 0
bl SetBgTilemapBuffer
str r4, [sp]
movs r0, 0x1E
str r0, [sp, 0x4]
movs r0, 0
movs r1, 0
movs r2, 0
movs r3, 0x2
bl FillBgTilemapBufferRect_Palette0
ldr r1, _081413D0 @ =gUnknown_8466620
str r5, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _081413D4 @ =gUnknown_8466998
str r6, [sp]
movs r0, 0x1
movs r2, 0
movs r3, 0
bl decompress_and_copy_tile_data_to_vram
movs r0, 0x1
bl CopyBgTilemapBufferToVram
movs r0, 0x2
bl stdpal_get
movs r1, 0xE0
movs r2, 0x20
bl LoadPalette
movs r0, 0x1
movs r1, 0xFF
bl FillWindowPixelBuffer
movs r0, 0x1
bl PutWindowTilemap
ldr r4, _081413D8 @ =gUnknown_841B779
movs r0, 0
adds r1, r4, 0
movs r2, 0
bl GetStringWidth
movs r2, 0xEC
subs r2, r0
add r1, sp, 0x10
movs r0, 0xF
strb r0, [r1]
strb r6, [r1, 0x1]
movs r0, 0x2
strb r0, [r1, 0x2]
lsls r2, 24
lsrs r2, 24
str r1, [sp]
str r5, [sp, 0x4]
str r4, [sp, 0x8]
movs r0, 0x1
movs r1, 0
movs r3, 0
bl box_print
movs r0, 0
bl CopyBgTilemapBufferToVram
movs r1, 0x83
lsls r1, 5
movs r0, 0
bl SetGpuRegBits
movs r0, 0x50
movs r1, 0xF8
bl SetGpuReg
bl sub_8140C0C
bl sub_8140CA0
bl sub_8140E9C
bl sub_8140FC4
bl sub_8140F2C
movs r0, 0x1
negs r0, r0
movs r1, 0x10
movs r2, 0
bl BlendPalettes
ldr r0, _081413DC @ =sub_8141118
bl SetVBlankCallback
ldr r0, _081413E0 @ =sub_8140E40
bl SetHBlankCallback
b _0814142E
.align 2, 0
_0814139C: .4byte 0x0600c000
_081413A0: .4byte gUnknown_8466B10
_081413A4: .4byte gUnknown_8466B20
_081413A8: .4byte 0x0000205c
_081413AC: .4byte gUnknown_84659D0
_081413B0: .4byte gUnknown_846653C
_081413B4: .4byte 0x0000185c
_081413B8: .4byte gUnknown_84661D4
_081413BC: .4byte gUnknown_8465930
_081413C0: .4byte gUnknown_84664BC
_081413C4: .4byte gUnknown_84665C0
_081413C8: .4byte 0x00007fde
_081413CC: .4byte 0x0000085c
_081413D0: .4byte gUnknown_8466620
_081413D4: .4byte gUnknown_8466998
_081413D8: .4byte gUnknown_841B779
_081413DC: .4byte sub_8141118
_081413E0: .4byte sub_8140E40
_081413E4:
bl free_temp_tile_data_buffers_if_possible
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
bne _08141450
movs r0, 0
bl ShowBg
movs r0, 0x3
bl ShowBg
movs r0, 0x2
bl ShowBg
movs r0, 0x1
bl HideBg
bl sub_8141B34
movs r4, 0x1
negs r4, r4
adds r0, r4, 0
movs r1, 0x10
movs r2, 0
bl BlendPalettes
str r5, [sp]
adds r0, r4, 0
adds r1, r4, 0
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
movs r0, 0x3
bl EnableInterrupts
_0814142E:
ldrb r0, [r7]
adds r0, 0x1
strb r0, [r7]
b _08141450
_08141436:
bl UpdatePaletteFade
ldr r0, _0814144C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _08141450
movs r0, 0
b _08141452
.align 2, 0
_0814144C: .4byte gPaletteFade
_08141450:
movs r0, 0x1
_08141452:
add sp, 0x14
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8141198
thumb_func_start sub_8141460
sub_8141460: @ 8141460
push {r4,lr}
-51
View File
@@ -2,57 +2,6 @@
.include "constants/constants.inc"
.section .rodata
.align 2
gUnknown_8465930:: @ 8465930
.incbin "graphics/slot_machine/unk_8465930.gbapal"
gUnknown_8465950:: @ 8465950
.incbin "graphics/slot_machine/unk_8465950.gbapal"
.incbin "graphics/slot_machine/unk_8465970.gbapal"
.incbin "graphics/slot_machine/unk_8465990.gbapal"
.incbin "graphics/slot_machine/unk_84659b0.gbapal"
gUnknown_84659D0:: @ 84659D0
.incbin "graphics/slot_machine/unk_84659d0.4bpp.lz"
gUnknown_84661D4:: @ 84661D4
.incbin "graphics/slot_machine/unk_84661d4.bin.lz"
gUnknown_84664BC:: @ 84664BC
.incbin "graphics/slot_machine/unk_84664bc.gbapal"
gUnknown_84664DC:: @ 84664DC
.incbin "graphics/slot_machine/unk_84664dc.gbapal"
.incbin "graphics/slot_machine/unk_84664fc.gbapal"
.incbin "graphics/slot_machine/unk_846651c.gbapal"
gUnknown_846653C:: @ 846653C
.incbin "graphics/slot_machine/unk_846653c.4bpp.lz"
gUnknown_84665C0:: @ 84665C0
.incbin "graphics/slot_machine/unk_84665c0.gbapal"
.incbin "graphics/slot_machine/unk_84665e0.gbapal"
.incbin "graphics/slot_machine/unk_8466600.gbapal"
gUnknown_8466620:: @ 8466620
.incbin "graphics/slot_machine/unk_8466620.4bpp.lz"
gUnknown_8466998:: @ 8466998
.incbin "graphics/slot_machine/unk_8466998.bin.lz"
.align 2 @ bg templates
gUnknown_8466B10:: @ 8466B10
.4byte 0x000001d0
.4byte 0x000031ff
.4byte 0x000021ea
.4byte 0x000001c5
gUnknown_8466B20:: @ 8466B20
window_template 0x00, 0x05, 0x0f, 0x14, 0x04, 0x0f, 0x004f
window_template 0x00, 0x00, 0x00, 0x1e, 0x02, 0x0e, 0x0013
window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000
gUnknown_8466B38::
.2byte 0x00a4, 0x00a5, 0x00a6, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00e7, 0x012c, 0x014c, 0x0191, 0x01b1, 0x01f6, 0x0216, 0x0217, 0x0218
.2byte 0x0219, 0x0237, 0x0238, 0x0239
+1
View File
@@ -32,5 +32,6 @@ u16 sub_80F796C(void);
void sub_80F6B08(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void * gfx, u32 size, u16 a3, u8 a4);
void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow);
void sub_80F6C14(void);
#endif // GUARD_NEW_MENU_HELPERS_H
+503 -27
View File
@@ -1,4 +1,7 @@
#include "global.h"
#include "gpu_regs.h"
#include "dma3.h"
#include "bg.h"
#include "palette.h"
#include "decompress.h"
#include "task.h"
@@ -10,9 +13,13 @@
#include "overworld.h"
#include "slot_machine.h"
#include "menu.h"
#include "new_menu_helpers.h"
#include "text_window.h"
#include "random.h"
#include "constants/songs.h"
extern const u8 gUnknown_841B779[];
struct SlotMachineState
{
MainCallback savedCallback;
@@ -44,20 +51,24 @@ struct SlotMachineGfxManager
vu16 * field_70;
};
struct SlotMachineReelActionTaskDataSub_0000
struct SlotMachineSetupTaskDataSub_0000
{
u16 unk0;
u8 unk2;
u8 unk3;
};
struct SlotMachineReelActionTaskData
struct SlotMachineSetupTaskData
{
struct SlotMachineReelActionTaskDataSub_0000 field_0000[8];
struct SlotMachineSetupTaskDataSub_0000 field_0000[8];
u8 filler_0020[8];
u32 field_0028;
u8 filler_002C[0x2830];
};
u8 filler_002C[0x830];
u8 field_085C[0x800];
u8 field_105C[0x800];
u8 field_185C[0x800];
u8 field_205C[0x800];
}; // size: 285C
EWRAM_DATA struct SlotMachineState * sSlotMachineState = NULL;
EWRAM_DATA struct SlotMachineGfxManager * sSlotMachineGfxManager = NULL;
@@ -91,26 +102,27 @@ void sub_8140C6C(struct SlotMachineGfxManager * manager);
void sub_8140D7C(const s16 *, const s16 *);
bool32 sub_814104C(void);
void sub_8141094(void);
struct SlotMachineReelActionTaskData * sub_814112C(void);
struct SlotMachineSetupTaskData * sub_814112C(void);
void sub_81410CC(u8 taskId);
bool8 sub_8141198(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_8141460(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_81414AC(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_81414EC(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_81414FC(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_8141518(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_8141558(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_8141568(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_8141578(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_8141584(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_81415C8(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_8141610(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_8141650(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_8141690(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_81416C8(u8 *, struct SlotMachineReelActionTaskData *);
bool8 sub_8141764(u8 *, struct SlotMachineReelActionTaskData *);
void sub_8141148(u16 a0, u8 a1);
bool32 sub_8141180(u8 a0);
bool8 sub_8141198(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141460(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_81414AC(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_81414EC(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_81414FC(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141518(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141558(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141568(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141578(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141584(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_81415C8(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141610(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141650(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141690(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_81416C8(u8 *, struct SlotMachineSetupTaskData *);
bool8 sub_8141764(u8 *, struct SlotMachineSetupTaskData *);
void sub_8141B34(void);
void sub_8141C30(u8, u8);
const u8 gUnknown_8464890[][2] = {
@@ -466,7 +478,7 @@ const struct SpriteTemplate gUnknown_84658D8 = {
1, 5, &gUnknown_8465894, gUnknown_84658C8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
};
bool8 (*const gUnknown_84658F0[])(u8 *, struct SlotMachineReelActionTaskData *) = {
bool8 (*const gUnknown_84658F0[])(u8 *, struct SlotMachineSetupTaskData *) = {
sub_8141198,
sub_8141460,
sub_81414AC,
@@ -485,6 +497,81 @@ bool8 (*const gUnknown_84658F0[])(u8 *, struct SlotMachineReelActionTaskData *)
sub_8141764
};
const u16 gUnknown_8465930[] = INCBIN_U16("graphics/slot_machine/unk_8465930.gbapal");
const u16 gUnknown_8465950[] = INCBIN_U16("graphics/slot_machine/unk_8465950.gbapal");
const u16 gUnknown_8465970[] = INCBIN_U16("graphics/slot_machine/unk_8465970.gbapal");
const u16 gUnknown_8465990[] = INCBIN_U16("graphics/slot_machine/unk_8465990.gbapal");
const u16 gUnknown_84659B0[] = INCBIN_U16("graphics/slot_machine/unk_84659b0.gbapal");
const u32 gUnknown_84659D0[] = INCBIN_U32("graphics/slot_machine/unk_84659d0.4bpp.lz");
const u32 gUnknown_84661D4[] = INCBIN_U32("graphics/slot_machine/unk_84661d4.bin.lz");
const u16 gUnknown_84664BC[] = INCBIN_U16("graphics/slot_machine/unk_84664bc.gbapal");
const u16 gUnknown_84664DC[] = INCBIN_U16("graphics/slot_machine/unk_84664dc.gbapal");
const u16 gUnknown_84664FC[] = INCBIN_U16("graphics/slot_machine/unk_84664fc.gbapal");
const u16 gUnknown_846651C[] = INCBIN_U16("graphics/slot_machine/unk_846651c.gbapal");
const u32 gUnknown_846653C[] = INCBIN_U32("graphics/slot_machine/unk_846653c.4bpp.lz");
const u16 gUnknown_84665C0[] = INCBIN_U16("graphics/slot_machine/unk_84665c0.gbapal");
const u16 gUnknown_84665E0[] = INCBIN_U16("graphics/slot_machine/unk_84665e0.gbapal");
const u16 gUnknown_8466600[] = INCBIN_U16("graphics/slot_machine/unk_8466600.gbapal");
const u32 gUnknown_8466620[] = INCBIN_U32("graphics/slot_machine/unk_8466620.4bpp.lz");
const u32 gUnknown_8466998[] = INCBIN_U32("graphics/slot_machine/unk_8466998.bin.lz");
const struct BgTemplate gUnknown_8466B10[] = {
{
.bg = 0,
.charBaseIndex = 0,
.mapBaseIndex = 29,
.screenSize = 0,
.paletteMode = 0,
.priority = 0,
.baseTile = 0x000
}, {
.bg = 3,
.charBaseIndex = 3,
.mapBaseIndex = 31,
.screenSize = 0,
.paletteMode = 0,
.priority = 3,
.baseTile = 0x000
}, {
.bg = 2,
.charBaseIndex = 2,
.mapBaseIndex = 30,
.screenSize = 0,
.paletteMode = 0,
.priority = 2,
.baseTile = 0x000
}, {
.bg = 1,
.charBaseIndex = 1,
.mapBaseIndex = 28,
.screenSize = 0,
.paletteMode = 0,
.priority = 0,
.baseTile = 0x000
}
};
const struct WindowTemplate gUnknown_8466B20[] = {
{
.bg = 0,
.tilemapLeft = 5,
.tilemapTop = 15,
.width = 20,
.height = 4,
.paletteNum = 0x0f,
.baseBlock = 0x04f
}, {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
.width = 30,
.height = 2,
.paletteNum = 0x0e,
.baseBlock = 0x013
},
DUMMY_WIN_TEMPLATE
};
void PlaySlotMachine(u16 machineIdx, MainCallback savedCallback)
{
ResetTasks();
@@ -1861,7 +1948,7 @@ bool32 sub_814104C(void)
{
s32 i;
struct SlotMachineReelActionTaskData * ptr = Alloc(sizeof(struct SlotMachineReelActionTaskData));
struct SlotMachineSetupTaskData * ptr = Alloc(sizeof(struct SlotMachineSetupTaskData));
if (ptr == NULL)
return FALSE;
for (i = 0; i < 8; i++)
@@ -1884,7 +1971,7 @@ void sub_8141094(void)
void sub_81410CC(u8 taskId)
{
struct SlotMachineReelActionTaskData * ptr = (void *)GetWordTaskArg(taskId, 0);
struct SlotMachineSetupTaskData * ptr = (void *)GetWordTaskArg(taskId, 0);
s32 i;
for (i = 0; i < 8; i++)
@@ -1901,14 +1988,14 @@ void sub_8141118(void)
ProcessSpriteCopyRequests();
}
struct SlotMachineReelActionTaskData * sub_814112C(void)
struct SlotMachineSetupTaskData * sub_814112C(void)
{
return (void *)GetWordTaskArg(FindTaskIdByFunc(sub_81410CC), 0);
}
void sub_8141148(u16 a0, u8 a1)
{
struct SlotMachineReelActionTaskData * ptr = sub_814112C();
struct SlotMachineSetupTaskData * ptr = sub_814112C();
ptr->field_0000[a1].unk0 = a0;
ptr->field_0000[a1].unk2 = 0;
ptr->field_0000[a1].unk3 = gUnknown_84658F0[a0](&ptr->field_0000[a1].unk2, ptr);
@@ -1918,3 +2005,392 @@ bool32 sub_8141180(u8 a0)
{
return sub_814112C()->field_0000[a0].unk3;
}
#ifdef NONMATCHING
bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
u16 pal;
struct TextColor textColor;
u32 x;
switch (*state)
{
case 0:
BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
(*state)++;
break;
case 1:
SetVBlankCallback(NULL);
ResetSpriteData();
FreeAllSpritePalettes();
RequestDma3Fill(0, (void *)OAM, OAM_SIZE, 1);
RequestDma3Fill(0, (void *)VRAM, 0x20, 1);
RequestDma3Fill(0, (void *)(VRAM + 0xC000), 0x20, 1);
SetGpuReg(REG_OFFSET_DISPCNT, 0);
sub_80F6C14();
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_8466B10, NELEMS(gUnknown_8466B10));
InitWindows(gUnknown_8466B20);
SetBgTilemapBuffer(3, ptr->field_205C);
FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 32, 32);
CopyBgTilemapBufferToVram(3);
reset_temp_tile_data_buffers();
decompress_and_copy_tile_data_to_vram(2, gUnknown_84659D0, 0, 0x00, 0);
decompress_and_copy_tile_data_to_vram(2, gUnknown_846653C, 0, 0xC0, 0);
SetBgTilemapBuffer(2, ptr->field_185C);
CopyToBgTilemapBuffer(2, gUnknown_84661D4, 0, 0x00);
CopyBgTilemapBufferToVram(2);
LoadPalette(gUnknown_8465930, 0x00, 0xA0);
LoadPalette(gUnknown_84664BC, 0x50, 0x20);
LoadPalette(gUnknown_84665C0, 0x70, 0x60);
pal = RGB(30, 30, 31);
LoadPalette(&pal, 0x00, 0x02);
LoadUserWindowBorderGfx(0, 0x00A, 0xD0);
sub_814FDA0(0, 0x001, 0xF0);
SetBgTilemapBuffer(0, ptr->field_085C);
FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 32, 30);
decompress_and_copy_tile_data_to_vram(1, gUnknown_8466620, 0, 0, 0);
decompress_and_copy_tile_data_to_vram(1, gUnknown_8466998, 0, 0, 1);
CopyBgTilemapBufferToVram(1);
LoadPalette(stdpal_get(2), 0xE0, 0x20);
FillWindowPixelBuffer(1, 0xFF);
PutWindowTilemap(1);
x = 0xEC - GetStringWidth(0, gUnknown_841B779, 0);
textColor.fgColor = 15;
textColor.bgColor = 1;
textColor.shadowColor = 2;
box_print(1, 0, x, 0, &textColor, 0, gUnknown_841B779);
CopyBgTilemapBufferToVram(0);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | 0x20 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN);
sub_8140C0C();
sub_8140CA0();
sub_8140E9C();
sub_8140FC4();
sub_8140F2C();
BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
SetVBlankCallback(sub_8141118);
SetHBlankCallback(sub_8140E40);
(*state)++;
break;
case 2:
if (!free_temp_tile_data_buffers_if_possible())
{
ShowBg(0);
ShowBg(3);
ShowBg(2);
HideBg(1);
sub_8141B34();
BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_HBLANK);
(*state)++;
}
break;
case 3:
UpdatePaletteFade();
if (!gPaletteFade.active)
return FALSE;
break;
}
return TRUE;
}
#else
NAKED
bool8 sub_8141198(u8 * state, struct SlotMachineSetupTaskData * ptr)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r8\n"
"\tpush {r7}\n"
"\tsub sp, 0x14\n"
"\tadds r7, r0, 0\n"
"\tmov r8, r1\n"
"\tldrb r6, [r7]\n"
"\tcmp r6, 0x1\n"
"\tbeq _081411D0\n"
"\tcmp r6, 0x1\n"
"\tbgt _081411B4\n"
"\tcmp r6, 0\n"
"\tbeq _081411C2\n"
"\tb _08141450\n"
"_081411B4:\n"
"\tcmp r6, 0x2\n"
"\tbne _081411BA\n"
"\tb _081413E4\n"
"_081411BA:\n"
"\tcmp r6, 0x3\n"
"\tbne _081411C0\n"
"\tb _08141436\n"
"_081411C0:\n"
"\tb _08141450\n"
"_081411C2:\n"
"\tmovs r0, 0x1\n"
"\tnegs r0, r0\n"
"\tmovs r1, 0x10\n"
"\tmovs r2, 0\n"
"\tbl BlendPalettes\n"
"\tb _0814142E\n"
"_081411D0:\n"
"\tmovs r0, 0\n"
"\tbl SetVBlankCallback\n"
"\tbl ResetSpriteData\n"
"\tbl FreeAllSpritePalettes\n"
"\tmovs r1, 0xE0\n"
"\tlsls r1, 19\n"
"\tmovs r2, 0x80\n"
"\tlsls r2, 3\n"
"\tmovs r0, 0\n"
"\tmovs r3, 0x1\n"
"\tbl RequestDma3Fill\n"
"\tmovs r1, 0xC0\n"
"\tlsls r1, 19\n"
"\tmovs r0, 0\n"
"\tmovs r2, 0x20\n"
"\tmovs r3, 0x1\n"
"\tbl RequestDma3Fill\n"
"\tldr r1, _0814139C @ =0x0600c000\n"
"\tmovs r0, 0\n"
"\tmovs r2, 0x20\n"
"\tmovs r3, 0x1\n"
"\tbl RequestDma3Fill\n"
"\tmovs r0, 0\n"
"\tmovs r1, 0\n"
"\tbl SetGpuReg\n"
"\tbl sub_80F6C14\n"
"\tmovs r0, 0\n"
"\tbl ResetBgsAndClearDma3BusyFlags\n"
"\tldr r1, _081413A0 @ =gUnknown_8466B10\n"
"\tmovs r0, 0\n"
"\tmovs r2, 0x4\n"
"\tbl InitBgsFromTemplates\n"
"\tldr r0, _081413A4 @ =gUnknown_8466B20\n"
"\tbl InitWindows\n"
"\tldr r1, _081413A8 @ =0x0000205c\n"
"\tadd r1, r8\n"
"\tmovs r0, 0x3\n"
"\tbl SetBgTilemapBuffer\n"
"\tmovs r4, 0x20\n"
"\tstr r4, [sp]\n"
"\tstr r4, [sp, 0x4]\n"
"\tmovs r0, 0x3\n"
"\tmovs r1, 0\n"
"\tmovs r2, 0\n"
"\tmovs r3, 0\n"
"\tbl FillBgTilemapBufferRect_Palette0\n"
"\tmovs r0, 0x3\n"
"\tbl CopyBgTilemapBufferToVram\n"
"\tbl reset_temp_tile_data_buffers\n"
"\tldr r1, _081413AC @ =gUnknown_84659D0\n"
"\tmovs r5, 0\n"
"\tstr r5, [sp]\n"
"\tmovs r0, 0x2\n"
"\tmovs r2, 0\n"
"\tmovs r3, 0\n"
"\tbl decompress_and_copy_tile_data_to_vram\n"
"\tldr r1, _081413B0 @ =gUnknown_846653C\n"
"\tstr r5, [sp]\n"
"\tmovs r0, 0x2\n"
"\tmovs r2, 0\n"
"\tmovs r3, 0xC0\n"
"\tbl decompress_and_copy_tile_data_to_vram\n"
"\tldr r1, _081413B4 @ =0x0000185c\n"
"\tadd r1, r8\n"
"\tmovs r0, 0x2\n"
"\tbl SetBgTilemapBuffer\n"
"\tldr r1, _081413B8 @ =gUnknown_84661D4\n"
"\tmovs r0, 0x2\n"
"\tmovs r2, 0\n"
"\tmovs r3, 0\n"
"\tbl CopyToBgTilemapBuffer\n"
"\tmovs r0, 0x2\n"
"\tbl CopyBgTilemapBufferToVram\n"
"\tldr r0, _081413BC @ =gUnknown_8465930\n"
"\tmovs r1, 0\n"
"\tmovs r2, 0xA0\n"
"\tbl LoadPalette\n"
"\tldr r0, _081413C0 @ =gUnknown_84664BC\n"
"\tmovs r1, 0x50\n"
"\tmovs r2, 0x20\n"
"\tbl LoadPalette\n"
"\tldr r0, _081413C4 @ =gUnknown_84665C0\n"
"\tmovs r1, 0x70\n"
"\tmovs r2, 0x60\n"
"\tbl LoadPalette\n"
"\tldr r1, _081413C8 @ =0x00007fde\n"
"\tadd r0, sp, 0xC\n"
"\tstrh r1, [r0]\n"
"\tmovs r1, 0\n"
"\tmovs r2, 0x2\n"
"\tbl LoadPalette\n"
"\tmovs r0, 0\n"
"\tmovs r1, 0xA\n"
"\tmovs r2, 0xD0\n"
"\tbl LoadUserWindowBorderGfx\n"
"\tmovs r0, 0\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0xF0\n"
"\tbl sub_814FDA0\n"
"\tldr r1, _081413CC @ =0x0000085c\n"
"\tadd r1, r8\n"
"\tmovs r0, 0\n"
"\tbl SetBgTilemapBuffer\n"
"\tstr r4, [sp]\n"
"\tmovs r0, 0x1E\n"
"\tstr r0, [sp, 0x4]\n"
"\tmovs r0, 0\n"
"\tmovs r1, 0\n"
"\tmovs r2, 0\n"
"\tmovs r3, 0x2\n"
"\tbl FillBgTilemapBufferRect_Palette0\n"
"\tldr r1, _081413D0 @ =gUnknown_8466620\n"
"\tstr r5, [sp]\n"
"\tmovs r0, 0x1\n"
"\tmovs r2, 0\n"
"\tmovs r3, 0\n"
"\tbl decompress_and_copy_tile_data_to_vram\n"
"\tldr r1, _081413D4 @ =gUnknown_8466998\n"
"\tstr r6, [sp]\n"
"\tmovs r0, 0x1\n"
"\tmovs r2, 0\n"
"\tmovs r3, 0\n"
"\tbl decompress_and_copy_tile_data_to_vram\n"
"\tmovs r0, 0x1\n"
"\tbl CopyBgTilemapBufferToVram\n"
"\tmovs r0, 0x2\n"
"\tbl stdpal_get\n"
"\tmovs r1, 0xE0\n"
"\tmovs r2, 0x20\n"
"\tbl LoadPalette\n"
"\tmovs r0, 0x1\n"
"\tmovs r1, 0xFF\n"
"\tbl FillWindowPixelBuffer\n"
"\tmovs r0, 0x1\n"
"\tbl PutWindowTilemap\n"
"\tldr r4, _081413D8 @ =gUnknown_841B779\n"
"\tmovs r0, 0\n"
"\tadds r1, r4, 0\n"
"\tmovs r2, 0\n"
"\tbl GetStringWidth\n"
"\tmovs r2, 0xEC\n"
"\tsubs r2, r0\n"
"\tadd r1, sp, 0x10\n"
"\tmovs r0, 0xF\n"
"\tstrb r0, [r1]\n"
"\tstrb r6, [r1, 0x1]\n"
"\tmovs r0, 0x2\n"
"\tstrb r0, [r1, 0x2]\n"
"\tlsls r2, 24\n"
"\tlsrs r2, 24\n"
"\tstr r1, [sp]\n"
"\tstr r5, [sp, 0x4]\n"
"\tstr r4, [sp, 0x8]\n"
"\tmovs r0, 0x1\n"
"\tmovs r1, 0\n"
"\tmovs r3, 0\n"
"\tbl box_print\n"
"\tmovs r0, 0\n"
"\tbl CopyBgTilemapBufferToVram\n"
"\tmovs r1, 0x83\n"
"\tlsls r1, 5\n"
"\tmovs r0, 0\n"
"\tbl SetGpuRegBits\n"
"\tmovs r0, 0x50\n"
"\tmovs r1, 0xF8\n"
"\tbl SetGpuReg\n"
"\tbl sub_8140C0C\n"
"\tbl sub_8140CA0\n"
"\tbl sub_8140E9C\n"
"\tbl sub_8140FC4\n"
"\tbl sub_8140F2C\n"
"\tmovs r0, 0x1\n"
"\tnegs r0, r0\n"
"\tmovs r1, 0x10\n"
"\tmovs r2, 0\n"
"\tbl BlendPalettes\n"
"\tldr r0, _081413DC @ =sub_8141118\n"
"\tbl SetVBlankCallback\n"
"\tldr r0, _081413E0 @ =sub_8140E40\n"
"\tbl SetHBlankCallback\n"
"\tb _0814142E\n"
"\t.align 2, 0\n"
"_0814139C: .4byte 0x0600c000\n"
"_081413A0: .4byte gUnknown_8466B10\n"
"_081413A4: .4byte gUnknown_8466B20\n"
"_081413A8: .4byte 0x0000205c\n"
"_081413AC: .4byte gUnknown_84659D0\n"
"_081413B0: .4byte gUnknown_846653C\n"
"_081413B4: .4byte 0x0000185c\n"
"_081413B8: .4byte gUnknown_84661D4\n"
"_081413BC: .4byte gUnknown_8465930\n"
"_081413C0: .4byte gUnknown_84664BC\n"
"_081413C4: .4byte gUnknown_84665C0\n"
"_081413C8: .4byte 0x00007fde\n"
"_081413CC: .4byte 0x0000085c\n"
"_081413D0: .4byte gUnknown_8466620\n"
"_081413D4: .4byte gUnknown_8466998\n"
"_081413D8: .4byte gUnknown_841B779\n"
"_081413DC: .4byte sub_8141118\n"
"_081413E0: .4byte sub_8140E40\n"
"_081413E4:\n"
"\tbl free_temp_tile_data_buffers_if_possible\n"
"\tlsls r0, 24\n"
"\tlsrs r5, r0, 24\n"
"\tcmp r5, 0\n"
"\tbne _08141450\n"
"\tmovs r0, 0\n"
"\tbl ShowBg\n"
"\tmovs r0, 0x3\n"
"\tbl ShowBg\n"
"\tmovs r0, 0x2\n"
"\tbl ShowBg\n"
"\tmovs r0, 0x1\n"
"\tbl HideBg\n"
"\tbl sub_8141B34\n"
"\tmovs r4, 0x1\n"
"\tnegs r4, r4\n"
"\tadds r0, r4, 0\n"
"\tmovs r1, 0x10\n"
"\tmovs r2, 0\n"
"\tbl BlendPalettes\n"
"\tstr r5, [sp]\n"
"\tadds r0, r4, 0\n"
"\tadds r1, r4, 0\n"
"\tmovs r2, 0x10\n"
"\tmovs r3, 0\n"
"\tbl BeginNormalPaletteFade\n"
"\tmovs r0, 0x3\n"
"\tbl EnableInterrupts\n"
"_0814142E:\n"
"\tldrb r0, [r7]\n"
"\tadds r0, 0x1\n"
"\tstrb r0, [r7]\n"
"\tb _08141450\n"
"_08141436:\n"
"\tbl UpdatePaletteFade\n"
"\tldr r0, _0814144C @ =gPaletteFade\n"
"\tldrb r1, [r0, 0x7]\n"
"\tmovs r0, 0x80\n"
"\tands r0, r1\n"
"\tcmp r0, 0\n"
"\tbne _08141450\n"
"\tmovs r0, 0\n"
"\tb _08141452\n"
"\t.align 2, 0\n"
"_0814144C: .4byte gPaletteFade\n"
"_08141450:\n"
"\tmovs r0, 0x1\n"
"_08141452:\n"
"\tadd sp, 0x14\n"
"\tpop {r3}\n"
"\tmov r8, r3\n"
"\tpop {r4-r7}\n"
"\tpop {r1}\n"
"\tbx r1");
}
#endif //NONMATCHING