diff options
author | Diegoisawesome <Diegoisawesome@users.noreply.github.com> | 2018-02-18 18:09:52 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-18 18:09:52 -0600 |
commit | 20bff7014f86dcbe5e8ee074480dedf673975bc7 (patch) | |
tree | c2a71dcad2005066be275f500a5f16fd9434a987 /src | |
parent | ef3a7a06b4e6192a6072b4ab221a54484bee91dc (diff) | |
parent | d7c486aa18a77b62aeb8c78a7d71bef9ba7edf8c (diff) |
Merge pull request #217 from DizzyEggg/some_nonmatchings
match some functions
Diffstat (limited to 'src')
-rw-r--r-- | src/braille_puzzles.c | 212 | ||||
-rw-r--r-- | src/decoration.c | 111 | ||||
-rwxr-xr-x | src/field_map_obj_helpers.c | 201 | ||||
-rw-r--r-- | src/tv.c | 158 |
4 files changed, 80 insertions, 602 deletions
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 55e75bfbf..35277fe87 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -25,7 +25,7 @@ enum }; extern u8 gBraillePuzzleCallbackFlag; -extern u8 gUnknown_085EFE74[][2]; +extern const u8 gUnknown_085EFE74[][2]; void SealedChamberShakingEffect(u8); void sub_8179860(void); @@ -375,37 +375,49 @@ bool8 FldEff_UsePuzzleEffect(void) return FALSE; } -// can't get this one to match due to the weird macro-like varsets with strange bitshifting. -// to note: 0x10000 is loaded in, and its obviously supposed to be 1, but i cant get 0x80 << 9 to be loaded in without using it directly. -// maybe there's some way of writing it that works? -#ifdef NONMATCHING -// ShouldDoBrailleRegicePuzzle bool8 ShouldDoBrailleRegicePuzzle(void) { u8 i; - if (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x43) + if (gSaveBlock1Ptr->location.mapGroup == 0x18 + && gSaveBlock1Ptr->location.mapNum == 0x43) { - // _08179A1A if (FlagGet(FLAG_SYS_BRAILLE_WAIT) != FALSE) return FALSE; - if (FlagGet(2) == FALSE) + if (FlagGet(FLAG_0x002) == FALSE) return FALSE; - if (FlagGet(3) == TRUE) + if (FlagGet(FLAG_0x003) == TRUE) return FALSE; for (i = 0; i < 36; i++) { - if (gSaveBlock1Ptr->pos.x == gUnknown_085EFE74[i][0] && gSaveBlock1Ptr->pos.y == gUnknown_085EFE74[i][1]) + u8 xPos = gUnknown_085EFE74[i][0]; + u8 yPos = gUnknown_085EFE74[i][1]; + if (gSaveBlock1Ptr->pos.x == xPos && gSaveBlock1Ptr->pos.y == yPos) { + u16 varValue; + if (i < 16) - VarSet(0x403B, (0x10000 << i | VarGet(0x403B) << 16) >> 16); // correct + { + u16 val = VarGet(0x403B); + val |= 1 << i; + VarSet(0x403B, val); + } else if (i < 32) - VarSet(0x403C, (0x10000 << (i - 16) | VarGet(0x403C) << 16) >> 16); // hmm? + { + u16 val = VarGet(0x403C); + val |= 1 << (i - 16); + VarSet(0x403C, val); + } else - VarSet(0x403D, (0x10000 << (i - 32) | VarGet(0x403D) << 16) >> 16); // hmm? - - if (VarGet(0x403B) != 0xFFFF || VarGet(0x403C) != 0xFF || VarGet(0x403D) != 0xF) + { + u16 val = VarGet(0x403D); + val |= 1 << (i - 32); + VarSet(0x403D, val); + } + + varValue = VarGet(0x403B); + if (varValue != 0xFFFF || VarGet(0x403C) != varValue || VarGet(0x403D) != 0xF) return FALSE; if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 21) @@ -414,170 +426,10 @@ bool8 ShouldDoBrailleRegicePuzzle(void) return FALSE; } } + + FlagSet(FLAG_0x003); + FlagClear(FLAG_0x002); } - // TODO: Find what flags 2 and 3 are. - FlagSet(3); - FlagClear(2); + return FALSE; } -#else -ASM_DIRECT -bool8 ShouldDoBrailleRegicePuzzle(void) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - ldr r4, =gSaveBlock1Ptr\n\ - ldr r0, [r4]\n\ - ldrh r1, [r0, 0x4]\n\ - ldr r0, =0x00004318\n\ - cmp r1, r0\n\ - beq _08179A1A\n\ - b _08179B5A\n\ -_08179A1A:\n\ - ldr r0, =0x000008b1\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _08179A28\n\ - b _08179B5A\n\ -_08179A28:\n\ - movs r0, 0x2\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _08179A36\n\ - b _08179B5A\n\ -_08179A36:\n\ - movs r0, 0x3\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bne _08179A58\n\ - b _08179B5A\n\ - .pool\n\ -_08179A54:\n\ - movs r0, 0x1\n\ - b _08179B5C\n\ -_08179A58:\n\ - movs r5, 0\n\ - mov r8, r4\n\ - ldr r4, =gUnknown_085EFE74\n\ - adds r0, r4, 0x1\n\ - mov r12, r0\n\ - ldr r6, =0x0000403b\n\ - ldr r1, =0x0000403c\n\ - mov r9, r1\n\ -_08179A68:\n\ - lsls r0, r5, 1\n\ - adds r1, r0, r4\n\ - add r0, r12\n\ - ldrb r3, [r0]\n\ - mov r7, r8\n\ - ldr r2, [r7]\n\ - movs r7, 0\n\ - ldrsh r0, [r2, r7]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bne _08179B44\n\ - movs r1, 0x2\n\ - ldrsh r0, [r2, r1]\n\ - cmp r0, r3\n\ - bne _08179B44\n\ - cmp r5, 0xF\n\ - bhi _08179AB0\n\ - adds r0, r6, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - lsls r1, r5\n\ - orrs r1, r0\n\ - lsrs r1, 16\n\ - adds r0, r6, 0\n\ - bl VarSet\n\ - b _08179AF0\n\ - .pool\n\ -_08179AB0:\n\ - cmp r5, 0x1F\n\ - bhi _08179AD2\n\ - mov r0, r9\n\ - bl VarGet\n\ - lsls r0, 16\n\ - adds r2, r5, 0\n\ - subs r2, 0x10\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - lsls r1, r2\n\ - orrs r1, r0\n\ - lsrs r1, 16\n\ - mov r0, r9\n\ - bl VarSet\n\ - b _08179AF0\n\ -_08179AD2:\n\ - ldr r4, =0x0000403d\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - adds r2, r5, 0\n\ - subs r2, 0x20\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - lsls r1, r2\n\ - orrs r1, r0\n\ - lsrs r1, 16\n\ - adds r0, r4, 0\n\ - bl VarSet\n\ -_08179AF0:\n\ - ldr r0, =0x0000403b\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - ldr r0, =0x0000ffff\n\ - cmp r4, r0\n\ - bne _08179B5A\n\ - ldr r0, =0x0000403c\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, r4\n\ - bne _08179B5A\n\ - ldr r0, =0x0000403d\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0xF\n\ - bne _08179B5A\n\ - ldr r0, =gSaveBlock1Ptr\n\ - ldr r0, [r0]\n\ - ldr r1, [r0]\n\ - ldr r0, =0x00150008\n\ - cmp r1, r0\n\ - beq _08179A54\n\ - b _08179B5A\n\ - .pool\n\ -_08179B44:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, 0x23\n\ - bls _08179A68\n\ - movs r0, 0x3\n\ - bl FlagSet\n\ - movs r0, 0x2\n\ - bl FlagClear\n\ -_08179B5A:\n\ - movs r0, 0\n\ -_08179B5C:\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided"); -} -#endif diff --git a/src/decoration.c b/src/decoration.c index c1b12a4d3..e4d867a34 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -2507,30 +2507,27 @@ void sub_812A040(u8 left, u8 top, u8 right, u8 bottom) } } -#ifdef NONMATCHING void sub_812A0E8(u8 taskId) { u8 i; u8 xOff; u8 yOff; - u8 decor; - register u8 decor asm("r1"); - struct DecorRearrangementDataBuffer *data; + u8 var1; + u32 var2; sCurDecorSelectedInRearrangement = 0; if (sub_8129FC8(taskId) != TRUE) { - for (i = 0; i < gUnknown_0203A17C.size; i ++) + for (i = 0; i < gUnknown_0203A17C.size; i++) { - decor = gUnknown_0203A17C.items[i]; - if (decor != DECOR_NONE) + var1 = gUnknown_0203A17C.items[i]; + if (var1 != DECOR_NONE) { - data = &sDecorRearrangementDataBuffer[0]; - sub_8129D8C(decor, data); - if (sub_8129E74(taskId, i, data) == TRUE) + sub_8129D8C(var1, &sDecorRearrangementDataBuffer[0]); + if (sub_8129E74(taskId, i, &sDecorRearrangementDataBuffer[0]) == TRUE) { - data->idx = i; - sCurDecorSelectedInRearrangement ++; + sDecorRearrangementDataBuffer[0].idx = i; + sCurDecorSelectedInRearrangement++; break; } } @@ -2539,95 +2536,13 @@ void sub_812A0E8(u8 taskId) { xOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[0].idx] >> 4; yOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[0].idx] & 0x0F; - sub_812A040(xOff, yOff - sDecorRearrangementDataBuffer[0].height + 1, xOff + sDecorRearrangementDataBuffer[0].width - 1, yOff); // Arithmetic register swap at the r2 argument: `add r2, r0, r2` instead of `add r2, r2, r0` + var1 = yOff - sDecorRearrangementDataBuffer[0].height + 1; + var2 = sDecorRearrangementDataBuffer[0].width + xOff - 1; + + sub_812A040(xOff, var1, var2, yOff); } } } -#else -ASM_DIRECT void sub_812A0E8(u8 taskId) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tldr r4, =sCurDecorSelectedInRearrangement\n" - "\tmovs r0, 0\n" - "\tstrb r0, [r4]\n" - "\tadds r0, r6, 0\n" - "\tbl sub_8129FC8\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x1\n" - "\tbeq _0812A18C\n" - "\tmovs r5, 0\n" - "\tldr r0, =gUnknown_0203A17C\n" - "\tldrb r1, [r0, 0x8]\n" - "\tcmp r5, r1\n" - "\tbcs _0812A15A\n" - "\tadds r7, r4, 0\n" - "_0812A10E:\n" - "\tldr r0, [r0]\n" - "\tadds r0, r5\n" - "\tldrb r1, [r0]\n" - "\tcmp r1, 0\n" - "\tbeq _0812A14C\n" - "\tldr r4, =sDecorRearrangementDataBuffer\n" - "\tadds r0, r1, 0\n" - "\tadds r1, r4, 0\n" - "\tbl sub_8129D8C\n" - "\tadds r0, r6, 0\n" - "\tadds r1, r5, 0\n" - "\tadds r2, r4, 0\n" - "\tbl sub_8129E74\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x1\n" - "\tbne _0812A14C\n" - "\tstrb r5, [r4]\n" - "\tldrb r0, [r7]\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r7]\n" - "\tb _0812A15A\n" - "\t.pool\n" - "_0812A14C:\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tldr r0, =gUnknown_0203A17C\n" - "\tldrb r1, [r0, 0x8]\n" - "\tcmp r5, r1\n" - "\tbcc _0812A10E\n" - "_0812A15A:\n" - "\tldr r0, =sCurDecorSelectedInRearrangement\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, 0\n" - "\tbeq _0812A18C\n" - "\tldr r0, =gUnknown_0203A17C\n" - "\tldr r2, =sDecorRearrangementDataBuffer\n" - "\tldrb r1, [r2]\n" - "\tldr r0, [r0, 0x4]\n" - "\tadds r0, r1\n" - "\tldrb r1, [r0]\n" - "\tlsrs r0, r1, 4\n" - "\tmovs r3, 0xF\n" - "\tands r3, r1\n" - "\tldrb r1, [r2, 0x2]\n" - "\tsubs r1, r3, r1\n" - "\tadds r1, 0x1\n" - "\tlsls r1, 24\n" - "\tlsrs r1, 24\n" - "\tldrb r2, [r2, 0x1]\n" - "\tadds r2, r0\n" - "\tsubs r2, 0x1\n" - "\tlsls r2, 24\n" - "\tlsrs r2, 24\n" - "\tbl sub_812A040\n" - "_0812A18C:\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.pool"); -} -#endif void sub_812A1A0(u8 taskId) { diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c index de26cb034..b8efcfe72 100755 --- a/src/field_map_obj_helpers.c +++ b/src/field_map_obj_helpers.c @@ -529,16 +529,17 @@ void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite) FieldEffectStart(FLDEFF_RIPPLE); } -#ifdef NONMATCHING bool32 sub_8097E50(struct MapObject *mapObject, struct Sprite *sprite) { + u32 one; bool32 ableToStore = FALSE; if (gUnknown_020375B8 == NULL) { gUnknown_020375B8 = AllocZeroed(0x14); gUnknown_020375B8[0] = mapObject->localId; - gUnknown_020375B8[16] = 1; - ableToStore = TRUE; + // needed to match + gUnknown_020375B8[16] = (one = 1); + ableToStore = one; } else { @@ -561,7 +562,7 @@ bool32 sub_8097E50(struct MapObject *mapObject, struct Sprite *sprite) { gUnknown_020375B8[firstFreeSlot] = mapObject->localId; gUnknown_020375B8[16]++; - ableToStore = TRUE; // the nonmatching problem is that ableToStore == TRUE isnt being merged with the above ableToStore = TRUE assignment. + ableToStore = TRUE; } } @@ -574,174 +575,34 @@ bool32 sub_8097E50(struct MapObject *mapObject, struct Sprite *sprite) sprite->data[2] = 1; return TRUE; } -#else -__attribute__((naked)) -bool32 sub_8097E50(struct MapObject *mapObject, struct Sprite *sprite) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - adds r4, r0, 0\n\ - mov r8, r1\n\ - movs r0, 0\n\ - mov r12, r0\n\ - ldr r0, =gUnknown_020375B8\n\ - ldr r1, [r0]\n\ - adds r6, r0, 0\n\ - cmp r1, 0\n\ - bne _08097E80\n\ - movs r0, 0x14\n\ - bl AllocZeroed\n\ - str r0, [r6]\n\ - ldrb r1, [r4, 0x8]\n\ - strb r1, [r0]\n\ - ldr r1, [r6]\n\ - movs r0, 0x1\n\ - strb r0, [r1, 0x10]\n\ - b _08097ECC\n\ - .pool\n\ -_08097E80:\n\ - movs r2, 0x10\n\ - movs r5, 0\n\ - movs r1, 0\n\ - adds r3, r6, 0\n\ - b _08097E90\n\ -_08097E8A:\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ -_08097E90:\n\ - cmp r1, 0xF\n\ - bhi _08097EB2\n\ - cmp r2, 0x10\n\ - bne _08097EA4\n\ - ldr r0, [r3]\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _08097EA4\n\ - adds r2, r1, 0\n\ -_08097EA4:\n\ - ldr r0, [r3]\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - ldrb r7, [r4, 0x8]\n\ - cmp r0, r7\n\ - bne _08097E8A\n\ - movs r5, 0x1\n\ -_08097EB2:\n\ - cmp r5, 0\n\ - bne _08097ECE\n\ - cmp r2, 0x10\n\ - beq _08097ECE\n\ - ldr r0, [r6]\n\ - adds r0, r2\n\ - ldrb r1, [r4, 0x8]\n\ - strb r1, [r0]\n\ - ldr r1, [r6]\n\ - ldrb r0, [r1, 0x10]\n\ - adds r0, 0x1\n\ - strb r0, [r1, 0x10]\n\ - movs r0, 0x1\n\ -_08097ECC:\n\ - mov r12, r0\n\ -_08097ECE:\n\ - mov r1, r12\n\ - cmp r1, 0x1\n\ - bne _08097EE0\n\ - ldrb r0, [r4, 0x1]\n\ - movs r1, 0x10\n\ - orrs r0, r1\n\ - movs r1, 0x2\n\ - orrs r0, r1\n\ - strb r0, [r4, 0x1]\n\ -_08097EE0:\n\ - movs r0, 0x1\n\ - mov r7, r8\n\ - strh r0, [r7, 0x32]\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided"); -} -#endif - -// this function is very similar to the above one and I don't want to decompile this one until the above is matching. -__attribute__((naked)) + bool32 sub_8097EF0(struct MapObject *mapObject, struct Sprite *sprite) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - adds r6, r0, 0\n\ - mov r8, r1\n\ - movs r0, 0x1\n\ - strh r0, [r1, 0x32]\n\ - ldr r5, =gUnknown_020375B8\n\ - ldr r0, [r5]\n\ - cmp r0, 0\n\ - beq _08097F68\n\ - movs r7, 0\n\ - adds r0, r6, 0\n\ - bl sub_8097F78\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0x10\n\ - beq _08097F28\n\ - ldr r0, [r5]\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strb r1, [r0]\n\ - ldr r1, [r5]\n\ - ldrb r0, [r1, 0x10]\n\ - subs r0, 0x1\n\ - strb r0, [r1, 0x10]\n\ - movs r7, 0x1\n\ -_08097F28:\n\ - ldr r0, [r5]\n\ - ldrb r4, [r0, 0x10]\n\ - cmp r4, 0\n\ - bne _08097F36\n\ - bl Free\n\ - str r4, [r5]\n\ -_08097F36:\n\ - cmp r7, 0x1\n\ - bne _08097F68\n\ - ldrb r0, [r6, 0x5]\n\ - bl GetFieldObjectGraphicsInfo\n\ - ldrb r1, [r0, 0xC]\n\ - lsls r1, 25\n\ - lsrs r1, 31\n\ - lsls r1, 4\n\ - ldrb r2, [r6, 0x1]\n\ - movs r0, 0x11\n\ - negs r0, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - movs r1, 0x3\n\ - negs r1, r1\n\ - ands r0, r1\n\ - strb r0, [r6, 0x1]\n\ - mov r2, r8\n\ - adds r2, 0x2C\n\ - ldrb r1, [r2]\n\ - movs r0, 0x41\n\ - negs r0, r0\n\ - ands r0, r1\n\ - strb r0, [r2]\n\ -_08097F68:\n\ - movs r0, 0x1\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .pool\n\ - .syntax divided"); + bool32 ableToStore; + u8 id; + + sprite->data[2] = 1; + if (gUnknown_020375B8 != NULL) + { + ableToStore = FALSE; + id = sub_8097F78(mapObject); + if (id != 16) + { + gUnknown_020375B8[id] = 0; + gUnknown_020375B8[16]--; + ableToStore = TRUE; + } + if (gUnknown_020375B8[16] == 0) + FREE_AND_SET_NULL(gUnknown_020375B8); + if (ableToStore == TRUE) + { + mapObject->mapobj_bit_12 = GetFieldObjectGraphicsInfo(mapObject->graphicsId)->inanimate; + mapObject->mapobj_bit_9 = 0; + sprite->animPaused = 0; + } + } + + return TRUE; } u8 sub_8097F78(struct MapObject *mapObject) @@ -2088,7 +2088,6 @@ void sub_80EDE84(u16 nCoinsSpent) sFindThatGamerCoinsSpent = nCoinsSpent; } -#ifdef NONMATCHING // FIXME: Register allocation shenanigans void sub_80EDE98(TVShow *show) { u8 i; @@ -2140,11 +2139,11 @@ void sub_80EDE98(TVShow *show) default: for (k = 0; k < n * n; k ++) { - i = Random() % n; + deco = Random() % n; j = Random() % n; - x = sTV_DecorationsBuffer[i]; - sTV_DecorationsBuffer[i] = sTV_DecorationsBuffer[j]; - sTV_DecorationsBuffer[j] = x; + i = sTV_DecorationsBuffer[deco]; + sTV_DecorationsBuffer[deco] = sTV_DecorationsBuffer[j]; + sTV_DecorationsBuffer[j] = i; } for (i = 0; i < show->secretBaseVisit.nDecorations; i ++) { @@ -2153,155 +2152,6 @@ void sub_80EDE98(TVShow *show) break; } } -#else -ASM_DIRECT -void sub_80EDE98(TVShow *show) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r9\n" - "\tmov r6, r8\n" - "\tpush {r6,r7}\n" - "\tmov r8, r0\n" - "\tmovs r3, 0\n" - "\tldr r6, =sTV_DecorationsBuffer\n" - "\tldr r7, =gSaveBlock1Ptr\n" - "\tadds r2, r6, 0\n" - "\tmovs r1, 0\n" - "_080EDEAC:\n" - "\tadds r0, r3, r2\n" - "\tstrb r1, [r0]\n" - "\tadds r0, r3, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r3, r0, 24\n" - "\tcmp r3, 0xF\n" - "\tbls _080EDEAC\n" - "\tmovs r3, 0\n" - "\tmovs r5, 0\n" - "_080EDEBE:\n" - "\tldr r0, [r7]\n" - "\tldr r1, =0x00001aae\n" - "\tadds r0, r1\n" - "\tadds r0, r3\n" - "\tldrb r4, [r0]\n" - "\tadds r3, 0x1\n" - "\tcmp r4, 0\n" - "\tbeq _080EDF0A\n" - "\tmovs r1, 0\n" - "\tldrb r0, [r6]\n" - "\tcmp r0, 0\n" - "\tbne _080EDEE8\n" - "\tstrb r4, [r6]\n" - "\tb _080EDF04\n" - "\t.pool\n" - "_080EDEE8:\n" - "\tadds r0, r1, r6\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, r4\n" - "\tbeq _080EDF0A\n" - "\tadds r0, r1, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r1, r0, 24\n" - "\tcmp r1, 0xF\n" - "\tbhi _080EDF0A\n" - "\tadds r2, r1, r6\n" - "\tldrb r0, [r2]\n" - "\tcmp r0, 0\n" - "\tbne _080EDEE8\n" - "\tstrb r4, [r2]\n" - "_080EDF04:\n" - "\tadds r0, r5, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "_080EDF0A:\n" - "\tlsls r0, r3, 24\n" - "\tlsrs r3, r0, 24\n" - "\tcmp r3, 0xF\n" - "\tbls _080EDEBE\n" - "\tcmp r5, 0x4\n" - "\tbls _080EDF1E\n" - "\tmovs r0, 0x4\n" - "\tmov r1, r8\n" - "\tstrb r0, [r1, 0x3]\n" - "\tb _080EDF22\n" - "_080EDF1E:\n" - "\tmov r0, r8\n" - "\tstrb r5, [r0, 0x3]\n" - "_080EDF22:\n" - "\tmov r1, r8\n" - "\tldrb r0, [r1, 0x3]\n" - "\tcmp r0, 0\n" - "\tbeq _080EDFA4\n" - "\tcmp r0, 0x1\n" - "\tbne _080EDF34\n" - "\tldrb r0, [r6]\n" - "\tstrb r0, [r1, 0x4]\n" - "\tb _080EDFA4\n" - "_080EDF34:\n" - "\tmovs r6, 0\n" - "\tadds r7, r5, 0\n" - "\tmuls r7, r5\n" - "\tcmp r6, r7\n" - "\tbge _080EDF7E\n" - "\tldr r0, =sTV_DecorationsBuffer\n" - "\tmov r9, r0\n" - "_080EDF42:\n" - "\tbl Random\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tadds r1, r5, 0\n" - "\tbl __modsi3\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tbl Random\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tadds r1, r5, 0\n" - "\tbl __modsi3\n" - "\tlsls r0, 24\n" - "\tlsrs r1, r0, 24\n" - "\tmov r0, r9\n" - "\tadds r2, r4, r0\n" - "\tldrb r3, [r2]\n" - "\tadd r1, r9\n" - "\tldrb r0, [r1]\n" - "\tstrb r0, [r2]\n" - "\tstrb r3, [r1]\n" - "\tadds r0, r6, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r6, r0, 16\n" - "\tcmp r6, r7\n" - "\tblt _080EDF42\n" - "_080EDF7E:\n" - "\tmovs r3, 0\n" - "\tmov r1, r8\n" - "\tldrb r1, [r1, 0x3]\n" - "\tcmp r3, r1\n" - "\tbcs _080EDFA4\n" - "\tmov r2, r8\n" - "\tadds r2, 0x4\n" - "\tldr r4, =sTV_DecorationsBuffer\n" - "_080EDF8E:\n" - "\tadds r1, r2, r3\n" - "\tadds r0, r3, r4\n" - "\tldrb r0, [r0]\n" - "\tstrb r0, [r1]\n" - "\tadds r0, r3, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r3, r0, 24\n" - "\tmov r0, r8\n" - "\tldrb r0, [r0, 0x3]\n" - "\tcmp r3, r0\n" - "\tbcc _080EDF8E\n" - "_080EDFA4:\n" - "\tpop {r3,r4}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.pool"); -} -#endif void sub_80EDFB4(TVShow *show) { |