diff options
-rw-r--r-- | src/scene/berry_blender.c | 487 |
1 files changed, 483 insertions, 4 deletions
diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 2535f02a6..5b013e8de 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -274,7 +274,7 @@ static void sub_8051B18(void); static void sub_805123C(void); static void sub_8050954(void); static bool8 Blender_PrintBlendingRanking(void); -static bool8 Blender_PrintBlendingResults(void); +bool8 Blender_PrintBlendingResults(void); static void sub_80510E8(void); static void sub_8050E30(void); static void sub_805197C(u16 a0, u16 a1); @@ -3278,10 +3278,489 @@ static void sub_8051C04(struct Sprite* sprite) #if DEBUG __attribute__((naked)) -static bool8 Blender_PrintBlendingResults(void) +bool8 Blender_PrintBlendingResults(void) { - // TODO: disassemble this! - asm(".incbin \"baserom_de_debug.gba\", 0x56178, 0x5655C-0x56178"); + asm(".syntax unified\n\ +loc_8056178:\n\ + PUSH {R4-R7,LR}\n\ + MOV R7, R10\n\ + MOV R6, R9\n\ + MOV R5, R8\n\ + PUSH {R5-R7}\n\ + SUB SP, SP, #0x34\n\ + LDR R1, off_805619C\n\ + LDR R0, [R1]\n\ + LDRB R0, [R0]\n\ + ADDS R2, R1, #0\n\ + CMP R0, #6 @ switch 7 cases\n\ + BLS loc_8056192\n\ + B def_805619A @ jumptable 0805619A default case\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_8056192:\n\ + LSLS R0, R0, #2\n\ + LDR R1, off_80561A0\n\ + ADDS R0, R0, R1\n\ + LDR R0, [R0]\n\ + MOV PC, R0 @ switch jump\n\ +@ ---------------------------------------------------------------------------\n\ +off_805619C: .4byte gBerryBlenderData\n\ +off_80561A0: .4byte jpt_805619A\n\ +jpt_805619A: .4byte loc_80561C0 @ jump table for switch statement\n\ + .4byte loc_80561D6 @ jumptable 0805619A case 1\n\ + .4byte loc_80561F0 @ jumptable 0805619A case 2\n\ + .4byte loc_8056240 @ jumptable 0805619A case 3\n\ + .4byte loc_805645C @ jumptable 0805619A case 4\n\ + .4byte loc_8056470 @ jumptable 0805619A case 5\n\ + .4byte loc_8056538 @ jumptable 0805619A case 6\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_80561C0: @ jumptable 0805619A case 0\n\ + LDR R1, [R2]\n\ + LDRB R0, [R1]\n\ + ADDS R0, #1\n\ + STRB R0, [R1]\n\ + LDR R0, [R2]\n\ + MOVS R1, #0x98\n\ + LSLS R1, R1, #1\n\ + ADDS R0, R0, R1\n\ + MOVS R1, #0x11\n\ + STR R1, [R0]\n\ + B def_805619A @ jumptable 0805619A default case\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_80561D6: @ jumptable 0805619A case 1\n\ + LDR R1, [R2]\n\ + MOVS R0, #0x98\n\ + LSLS R0, R0, #1\n\ + ADDS R2, R1, R0\n\ + LDR R0, [R2]\n\ + SUBS R0, #0xA\n\ + STR R0, [R2]\n\ + CMP R0, #0\n\ + BLT loc_80561EA\n\ + B def_805619A @ jumptable 0805619A default case\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_80561EA:\n\ + MOVS R0, #0\n\ + STR R0, [R2]\n\ + B loc_8056520\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_80561F0: @ jumptable 0805619A case 2\n\ + LDR R1, [R2]\n\ + MOVS R2, #0x98\n\ + LSLS R2, R2, #1\n\ + ADDS R1, R1, R2\n\ + LDR R0, [R1]\n\ + ADDS R0, #1\n\ + STR R0, [R1]\n\ + CMP R0, #0x14\n\ + BGT loc_8056204\n\ + B def_805619A @ jumptable 0805619A default case\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_8056204:\n\ + MOVS R6, #0\n\ +\n\ +loc_8056206:\n\ + LDR R4, off_8056238\n\ + LDR R0, [R4]\n\ + ADDS R0, #0x50\n\ + ADDS R0, R0, R6\n\ + LDRB R1, [R0]\n\ + LSLS R0, R1, #4\n\ + ADDS R0, R0, R1\n\ + LSLS R0, R0, #2\n\ + LDR R1, off_805623C\n\ + ADDS R0, R0, R1\n\ + BL DestroySprite\n\ + ADDS R0, R6, #1\n\ + LSLS R0, R0, #0x10\n\ + LSRS R6, R0, #0x10\n\ + CMP R6, #2\n\ + BLS loc_8056206\n\ + LDR R1, [R4]\n\ + MOVS R0, #0x98\n\ + LSLS R0, R0, #1\n\ + ADDS R2, R1, R0\n\ + MOVS R0, #0\n\ + STR R0, [R2]\n\ + B loc_8056520\n\ +@ ---------------------------------------------------------------------------\n\ + .align 2, 0\n\ +off_8056238: .4byte gBerryBlenderData\n\ +off_805623C: .4byte gSprites\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_8056240: @ jumptable 0805619A case 3\n\ + MOVS R0, #4\n\ + MOVS R1, #2\n\ + MOVS R2, #0x19\n\ + MOVS R3, #0x11\n\ + BL Menu_DrawStdWindowFrame\n\ + LDR R0, dword_805642C\n\ + MOVS R1, #5\n\ + MOVS R2, #3\n\ + MOVS R3, #0xA0\n\ + BL sub_8072BD8\n\ + MOVS R6, #0\n\ + LDR R1, off_8056430\n\ + LDR R0, [R1]\n\ + ADDS R0, #0x88\n\ + ADD R2, SP, #0xC\n\ + MOV R8, R2\n\ + MOV R2, SP\n\ + ADDS R2, #0x16\n\ + STR R2, [SP,#0x30]\n\ + LDRB R0, [R0]\n\ + CMP R6, R0\n\ + BCS loc_8056322\n\ + MOV R9, R1\n\ + LDR R0, off_8056434\n\ + MOV R10, R0\n\ +\n\ +loc_8056276:\n\ + MOV R1, R9\n\ + LDR R2, [R1]\n\ + MOVS R1, #0xB2\n\ + LSLS R1, R1, #1\n\ + ADDS R0, R2, R1\n\ + ADDS R0, R0, R6\n\ + LDRB R4, [R0]\n\ + LSLS R1, R4, #4\n\ + ADDS R1, R1, R2\n\ + MOVS R2, #0xBF\n\ + LSLS R2, R2, #1\n\ + ADDS R1, R1, R2\n\ + MOV R0, R8\n\ + BL StringCopy\n\ + LSLS R5, R4, #3\n\ + SUBS R5, R5, R4\n\ + LSLS R5, R5, #2\n\ + MOV R1, R10\n\ + ADDS R0, R5, R1\n\ + LDRB R1, [R0,#0x1A]\n\ + MOV R0, R8\n\ + BL ConvertInternationalString\n\ + MOV R0, R8\n\ + LDR R1, dword_8056438\n\ + BL de_sub_8073174\n\ + MOV R2, R9\n\ + LDR R0, [R2]\n\ + ADDS R7, R0, #0\n\ + ADDS R7, #0xAB\n\ + ADDS R4, R6, #1\n\ + ADDS R0, R7, #0\n\ + ADDS R1, R4, #0\n\ + BL ConvertIntToDecimalString\n\ + ADDS R7, R0, #0\n\ + MOVS R1, #0\n\ + STRB R1, [R7]\n\ + MOVS R0, #0xAD\n\ + STRB R0, [R7,#1]\n\ + STRB R1, [R7,#2]\n\ + ADDS R7, #3\n\ + LDR R0, off_805643C\n\ + ADDS R5, R5, R0\n\ + ADDS R0, R7, #0\n\ + ADDS R1, R5, #0\n\ + MOVS R2, #0x58\n\ + MOVS R3, #0\n\ + BL sub_8072C74\n\ + ADDS R7, R0, #0\n\ + ADD R1, SP, #0xC\n\ + MOVS R2, #0x9D\n\ + MOVS R3, #0\n\ + BL sub_8072C74\n\ + MOV R2, R9\n\ + LDR R1, [R2]\n\ + ADDS R0, R1, #0\n\ + ADDS R0, #0xAB\n\ + LDR R3, dword_8056440\n\ + ADDS R1, #0x88\n\ + LDRB R2, [R1]\n\ + ADDS R3, R2, R3\n\ + LDR R1, dword_8056444\n\ + ADDS R2, R2, R1\n\ + LDRB R1, [R2]\n\ + ADDS R2, R6, #0\n\ + MULS R2, R1\n\ + LDRB R3, [R3]\n\ + ADDS R2, R2, R3\n\ + LSLS R2, R2, #0x18\n\ + LSRS R2, R2, #0x18\n\ + MOVS R1, #5\n\ + BL Menu_PrintText\n\ + LSLS R4, R4, #0x10\n\ + LSRS R6, R4, #0x10\n\ + MOV R1, R9\n\ + LDR R0, [R1]\n\ + ADDS R0, #0x88\n\ + LDRB R0, [R0]\n\ + CMP R6, R0\n\ + BCC loc_8056276\n\ +\n\ +loc_8056322:\n\ + LDR R6, off_8056430\n\ + LDR R0, [R6]\n\ + ADDS R0, #0x5A\n\ + LDRH R0, [R0]\n\ + MOVS R1, #0x64\n\ + BL __umodsi3\n\ + ADDS R1, R0, #0\n\ + LSLS R1, R1, #0x10\n\ + LSRS R1, R1, #0x10\n\ + MOV R0, R8\n\ + MOVS R2, #2\n\ + MOVS R3, #2\n\ + BL ConvertIntToDecimalStringN\n\ + LDR R0, [R6]\n\ + ADDS R7, R0, #0\n\ + ADDS R7, #0xAB\n\ + LDR R1, dword_8056448\n\ + ADDS R0, R7, #0\n\ + BL StringCopy\n\ + ADDS R7, R0, #0\n\ + LDR R0, [R6]\n\ + ADDS R0, #0x5A\n\ + LDRH R0, [R0]\n\ + MOVS R1, #0x64\n\ + BL __udivsi3\n\ + ADDS R1, R0, #0\n\ + LSLS R1, R1, #0x10\n\ + LSRS R1, R1, #0x10\n\ + ADDS R0, R7, #0\n\ + MOVS R2, #0x79\n\ + MOVS R3, #1\n\ + BL sub_8072C14\n\ + ADDS R7, R0, #0\n\ + MOVS R0, #0xB8\n\ + STRB R0, [R7]\n\ + ADDS R7, #1\n\ + ADDS R0, R7, #0\n\ + MOV R1, R8\n\ + MOVS R2, #0x88\n\ + MOVS R3, #1\n\ + BL sub_8072C74\n\ + ADDS R7, R0, #0\n\ + LDR R1, off_805644C\n\ + BL StringCopy\n\ + LDR R0, [R6]\n\ + ADDS R0, #0xAB\n\ + MOVS R1, #5\n\ + MOVS R2, #0xD\n\ + BL Menu_PrintText\n\ + LDR R0, [R6]\n\ + MOVS R2, #0x96\n\ + LSLS R2, R2, #1\n\ + ADDS R0, R0, R2\n\ + LDR R0, [R0]\n\ + MOVS R1, #0x3C\n\ + BL __udivsi3\n\ + ADDS R4, R0, #0\n\ + LSLS R4, R4, #0x10\n\ + LSRS R4, R4, #0x10\n\ + ADDS R0, R4, #0\n\ + MOVS R1, #0x3C\n\ + BL __umodsi3\n\ + ADDS R5, R0, #0\n\ + LSLS R5, R5, #0x10\n\ + LSRS R5, R5, #0x10\n\ + ADDS R0, R4, #0\n\ + MOVS R1, #0x3C\n\ + BL __udivsi3\n\ + ADDS R1, R0, #0\n\ + LSLS R1, R1, #0x10\n\ + LSRS R1, R1, #0x10\n\ + MOV R0, R8\n\ + MOVS R2, #2\n\ + MOVS R3, #2\n\ + BL ConvertIntToDecimalStringN\n\ + LDR R0, [SP,#0x30]\n\ + ADDS R1, R5, #0\n\ + MOVS R2, #2\n\ + MOVS R3, #2\n\ + BL ConvertIntToDecimalStringN\n\ + LDR R0, [R6]\n\ + ADDS R7, R0, #0\n\ + ADDS R7, #0xAB\n\ + LDR R1, dword_8056450\n\ + ADDS R0, R7, #0\n\ + BL StringCopy\n\ + ADDS R7, R0, #0\n\ + MOV R1, R8\n\ + MOVS R2, #0x63\n\ + MOVS R3, #1\n\ + BL sub_8072C74\n\ + ADDS R7, R0, #0\n\ + LDR R1, dword_8056454\n\ + BL StringAppend\n\ + ADDS R7, R0, #0\n\ + LDR R1, [SP,#0x30]\n\ + MOVS R2, #0x88\n\ + MOVS R3, #1\n\ + BL sub_8072C74\n\ + ADDS R7, R0, #0\n\ + LDR R1, dword_8056458\n\ + BL StringCopy\n\ + LDR R0, [R6]\n\ + ADDS R0, #0xAB\n\ + MOVS R1, #5\n\ + MOVS R2, #0xF\n\ + BL Menu_PrintText\n\ + LDR R1, [R6]\n\ + MOVS R0, #0x98\n\ + LSLS R0, R0, #1\n\ + ADDS R2, R1, R0\n\ + MOVS R0, #0\n\ + STR R0, [R2]\n\ + B loc_8056520\n\ +@ ---------------------------------------------------------------------------\n\ +dword_805642C: .4byte gOtherText_ResultsOfBlending\n\ +off_8056430: .4byte gBerryBlenderData\n\ +off_8056434: .4byte gLinkPlayers\n\ +dword_8056438: .4byte gOtherText_Berry\n\ +off_805643C: .4byte gLinkPlayers+0x8\n\ +dword_8056440: .4byte gUnknown_082165E9\n\ +dword_8056444: .4byte gUnknown_082165EE\n\ +dword_8056448: .4byte gOtherText_MaxSpeed\n\ +off_805644C: .4byte gOtherText_RPM\n\ +dword_8056450: .4byte gOtherText_RequiredTime\n\ +dword_8056454: .4byte gOtherText_Min\n\ +dword_8056458: .4byte gOtherText_Sec\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_805645C: @ jumptable 0805619A case 4\n\ + LDR R0, off_805646C\n\ + LDRH R1, [R0,#0x2E]\n\ + MOVS R0, #1\n\ + ANDS R0, R1\n\ + CMP R0, #0\n\ + BEQ def_805619A @ jumptable 0805619A default case\n\ + LDR R1, [R2]\n\ + B loc_8056520\n\ +@ ---------------------------------------------------------------------------\n\ +off_805646C: .4byte gMain\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_8056470: @ jumptable 0805619A case 5\n\ + BL Menu_EraseScreen\n\ + MOVS R0, #0\n\ + MOVS R1, #0xE\n\ + MOVS R2, #0x1D\n\ + MOVS R3, #0x13\n\ + BL Menu_DrawStdWindowFrame\n\ + MOVS R6, #0\n\ + ADD R1, SP, #0xC\n\ + MOV R8, R1\n\ + ADD R5, SP, #0x28\n\ + LDR R0, off_8056528\n\ + LDR R0, [R0]\n\ + ADDS R3, R0, #0\n\ + ADDS R3, #0x80\n\ + ADD R2, SP, #0x20\n\ +\n\ +loc_8056492:\n\ + LSLS R1, R6, #1\n\ + ADDS R0, R3, R1\n\ + LDRH R0, [R0]\n\ + CMP R0, #0\n\ + BEQ loc_80564A2\n\ + ADDS R1, R2, R1\n\ + SUBS R0, #0x85\n\ + STRH R0, [R1]\n\ +\n\ +loc_80564A2:\n\ + ADDS R0, R6, #1\n\ + LSLS R0, R0, #0x10\n\ + LSRS R6, R0, #0x10\n\ + CMP R6, #3\n\ + BLS loc_8056492\n\ + BL sub_8050760\n\ + LDR R4, off_8056528\n\ + LDR R3, [R4]\n\ + MOVS R2, #0xBE\n\ + LSLS R2, R2, #1\n\ + ADDS R0, R3, R2\n\ + ADDS R1, R3, #0\n\ + ADDS R1, #0x88\n\ + LDRB R2, [R1]\n\ + SUBS R1, #0x2E\n\ + LDRH R1, [R1]\n\ + STR R1, [SP]\n\ + ADDS R1, R5, #0\n\ + ADD R3, SP, #4\n\ + BL Blender_CalculatePokeblock\n\ + LDR R1, [R4]\n\ + ADDS R1, #0xAB\n\ + ADDS R0, R5, #0\n\ + BL Blender_PrintMadePokeblockString\n\ + LDR R0, off_805652C\n\ + MOVS R1, #6\n\ + BL CreateTask\n\ + BL sub_8007E40\n\ + ADDS R1, R0, #0\n\ + MOV R0, R8\n\ + MOVS R2, #0\n\ + MOVS R3, #4\n\ + BL ConvertIntToHexStringN\n\ + LDR R1, dword_8056530\n\ + MOV R0, R8\n\ + BL StringAppend\n\ + LDR R0, [R4]\n\ + ADDS R0, #0xAB\n\ + MOV R1, R8\n\ + BL StringAppend\n\ + LDR R0, [R4]\n\ + ADDS R0, #0xAB\n\ + MOVS R1, #1\n\ + MOVS R2, #0xF\n\ + BL MenuPrintMessage\n\ + LDR R0, off_8056534\n\ + LDRH R0, [R0]\n\ + MOVS R1, #1\n\ + BL RemoveBagItem\n\ + ADDS R0, R5, #0\n\ + BL sub_810CA34\n\ + LDR R1, [R4]\n\ +\n\ +loc_8056520:\n\ + LDRB R0, [R1]\n\ + ADDS R0, #1\n\ + STRB R0, [R1]\n\ + B def_805619A @ jumptable 0805619A default case\n\ +@ ---------------------------------------------------------------------------\n\ +off_8056528: .4byte gBerryBlenderData\n\ +off_805652C: .4byte sub_8052BD0+1\n\ +dword_8056530: .4byte gUnknown_08216249\n\ +off_8056534: .4byte gSpecialVar_ItemId\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_8056538: @ jumptable 0805619A case 6\n\ + BL Menu_UpdateWindowText\n\ + LSLS R0, R0, #0x18\n\ + CMP R0, #0\n\ + BEQ def_805619A @ jumptable 0805619A default case\n\ + BL Blender_TrySettingRecord\n\ + MOVS R0, #1\n\ + B loc_805654C\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +def_805619A: @ jumptable 0805619A default case\n\ + MOVS R0, #0\n\ +\n\ +loc_805654C:\n\ + ADD SP, SP, #0x34\n\ + POP {R3-R5}\n\ + MOV R8, R3\n\ + MOV R9, R4\n\ + MOV R10, R5\n\ + POP {R4-R7}\n\ + POP {R1}\n\ + BX R1\n\ + .syntax divided\n"); } #else static bool8 Blender_PrintBlendingResults(void) |