mirror of https://github.com/zeldaret/tmc.git
moved gCurrentAreaDroptable into gRoomVars properly
also rename globals
This commit is contained in:
parent
5145c4776d
commit
d64fea8164
|
|
@ -16,9 +16,9 @@ _0805453A:
|
|||
adds r0, r1, r0
|
||||
ldrb r1, [r0]
|
||||
lsls r0, r1, #5
|
||||
ldr r1, _0805455C @ =gDroptablesAreas
|
||||
ldr r1, _0805455C @ =gAreaDroptables
|
||||
adds r0, r0, r1
|
||||
ldr r1, _08054560 @ =gCurrentAreaDroptable
|
||||
ldr r1, _08054560 @ =gRoomVars+0x48
|
||||
movs r2, #0x20
|
||||
bl MemCopy
|
||||
pop {pc}
|
||||
|
|
@ -26,6 +26,6 @@ _0805453A:
|
|||
_08054550: .4byte gArea
|
||||
_08054554: .4byte gRoomTransition
|
||||
_08054558: .4byte gUnk_080FE1C6
|
||||
_0805455C: .4byte gDroptablesAreas
|
||||
_08054560: .4byte gCurrentAreaDroptable
|
||||
_0805455C: .4byte gAreaDroptables
|
||||
_08054560: .4byte gRoomVars+0x48
|
||||
.syntax divided
|
||||
|
|
|
|||
|
|
@ -24,14 +24,15 @@ typedef union {
|
|||
} Droptable;
|
||||
static_assert(sizeof(Droptable) == 0x20);
|
||||
|
||||
extern const Droptable gDroptablesEnemies[];
|
||||
extern const Droptable gDroptablesAreas[];
|
||||
extern const Droptable gDroptablesObjects[];
|
||||
extern const Droptable gEnemyDroptables[];
|
||||
extern const Droptable gAreaDroptables[];
|
||||
extern const Droptable gObjectDroptables[];
|
||||
extern const Droptable gUnk_0800191C[];
|
||||
extern const Droptable gDroptablesModifiers[];
|
||||
|
||||
#define gDroptableModifierNone gDroptablesModifiers[0]
|
||||
#define gDroptableModifierNoShells gDroptablesModifiers[1]
|
||||
#define gDroptableModifierNoKinstones gDroptablesModifiers[2]
|
||||
enum {
|
||||
DROPTABLE_NONE,
|
||||
DROPTABLE_NO_SHELLS,
|
||||
DROPTABLE_NO_KINSTONES,
|
||||
};
|
||||
extern const Droptable gDroptableModifiers[];
|
||||
|
||||
#endif // TMC_DROPTABLES_H
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "droptables.h"
|
||||
|
||||
enum RoomTransition {
|
||||
TRANSITION_DEFAULT,
|
||||
|
|
@ -72,8 +73,8 @@ typedef struct {
|
|||
/* 0x10 */ u8 unk_10[4];
|
||||
/* 0x14 */ u32 flags;
|
||||
/* 0x18 */ u32 unk3;
|
||||
/* 0x1c */ u8 filler4[48];
|
||||
/* 0x4c */ u8 filler5[28];
|
||||
/* 0x1c */ u8 filler4[44];
|
||||
/* 0x48 */ Droptable currentAreaDroptable;
|
||||
/* 0x68 */ u32 animFlags;
|
||||
/* 0x6c */ void* field_0x6c[8];
|
||||
/* 0x8c */ void* field_0x8c[8];
|
||||
|
|
|
|||
|
|
@ -116,7 +116,6 @@ SECTIONS {
|
|||
. = 0x000342F8; gUnk_020342F8 = .;
|
||||
. = 0x00034330; gUnk_02034330 = .;
|
||||
. = 0x00034350; gRoomVars = .;
|
||||
. = 0x00034398; gCurrentAreaDroptable = .;
|
||||
. = 0x00034480; gUnk_02034480 = .;
|
||||
. = 0x00034490; gUnk_02034490 = .;
|
||||
. = 0x00034492; gUnk_02034492 = .;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ extern u8 gUnk_080FE1C6[];
|
|||
0x8u,
|
||||
};
|
||||
*/
|
||||
extern Droptable gCurrentAreaDroptable;
|
||||
extern void (*const gUnk_080FE2A0[])(void);
|
||||
|
||||
void ForceEquipItem(u32, u8);
|
||||
|
|
@ -184,7 +183,7 @@ NONMATCH("asm/non_matching/sub_08054524.inc", void sub_08054524(void)) {
|
|||
bVar1 = 0;
|
||||
}
|
||||
|
||||
MemCopy(&gDroptablesAreas[0] + gUnk_080FE1C6[bVar1] * 0x8, &gCurrentAreaDroptable, 0x20);
|
||||
MemCopy(&gAreaDroptables[0] + gUnk_080FE1C6[bVar1] * 0x8, &gRoomVars.currentAreaDroptable, 0x20);
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
|
|
@ -212,11 +211,11 @@ u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) {
|
|||
Droptable droptable;
|
||||
r3 = arg1;
|
||||
if (gRoomVars.field_0x2 != 1) {
|
||||
ptr2 = &gDroptableModifierNone;
|
||||
ptr2 = &gDroptableModifiers[DROPTABLE_NONE];
|
||||
ptr4 = NULL;
|
||||
switch (r3) {
|
||||
case 1 ... 12:
|
||||
ptr4 = &gDroptablesEnemies[r3];
|
||||
ptr4 = &gEnemyDroptables[r3];
|
||||
break;
|
||||
#ifndef EU
|
||||
case 24:
|
||||
|
|
@ -232,9 +231,9 @@ u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) {
|
|||
#ifdef EU
|
||||
case 24:
|
||||
#endif
|
||||
ptr2 = &gDroptablesObjects[r3 - 16];
|
||||
ptr2 = &gObjectDroptables[r3 - 16];
|
||||
case 15:
|
||||
ptr4 = &gCurrentAreaDroptable;
|
||||
ptr4 = &gRoomVars.currentAreaDroptable;
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
|
|
@ -243,12 +242,12 @@ u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) {
|
|||
if (ptr4 != 0) {
|
||||
if ((r1 = gSave.stats.unkB) == 0) {
|
||||
// nop
|
||||
ptr3 = &gDroptableModifierNone;
|
||||
ptr3 = &gDroptableModifiers[DROPTABLE_NONE];
|
||||
} else {
|
||||
#ifdef EU
|
||||
ptr3 = &gDroptablesEnemies[r1 + 9];
|
||||
ptr3 = &gEnemyDroptables[r1 + 9];
|
||||
#else
|
||||
ptr3 = &gDroptablesEnemies[r1 + 6];
|
||||
ptr3 = &gEnemyDroptables[r1 + 6];
|
||||
#endif
|
||||
}
|
||||
// vector addition, s0 = ptr4 + ptr2 + ptr3
|
||||
|
|
@ -265,16 +264,16 @@ u32 CreateRandomItemDrop(Entity* arg0, u32 arg1) {
|
|||
if (gSave.stats.rupees <= 10) {
|
||||
droptable.s.rupee5 += 1;
|
||||
}
|
||||
ptr2 = &gDroptableModifierNone;
|
||||
ptr2 = &gDroptableModifiers[DROPTABLE_NONE];
|
||||
r0 = gSave.stats.hasAllFigurines;
|
||||
ptr3 = &gDroptableModifierNone;
|
||||
ptr3 = &gDroptableModifiers[DROPTABLE_NONE];
|
||||
// don't drop shells anymore
|
||||
if (r0 != 0) {
|
||||
ptr2 = &gDroptableModifierNoShells;
|
||||
ptr2 = &gDroptableModifiers[DROPTABLE_NO_SHELLS];
|
||||
}
|
||||
// don't drop kinstones anymore
|
||||
if (gSave.didAllFusions != 0) {
|
||||
ptr3 = &gDroptableModifierNoKinstones;
|
||||
ptr3 = &gDroptableModifiers[DROPTABLE_NO_KINSTONES];
|
||||
}
|
||||
// vector addition, s0 = s0 + ptr2 + ptr3
|
||||
// resulting values are clamped to be >= 0
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#include "global.h"
|
||||
#include "droptables.h"
|
||||
|
||||
const Droptable gDroptablesEnemies[] = {
|
||||
const Droptable gEnemyDroptables[] = {
|
||||
[0] = { {
|
||||
.none = -999,
|
||||
.rupee1 = -999,
|
||||
|
|
@ -328,7 +328,7 @@ const Droptable gDroptablesEnemies[] = {
|
|||
} },
|
||||
};
|
||||
|
||||
const Droptable gDroptablesAreas[] = {
|
||||
const Droptable gAreaDroptables[] = {
|
||||
[0] = { {
|
||||
.none = 920,
|
||||
.rupee1 = 15,
|
||||
|
|
@ -676,7 +676,7 @@ const Droptable gDroptablesAreas[] = {
|
|||
.none5 = 0,
|
||||
} },
|
||||
};
|
||||
const Droptable gDroptablesObjects[] = {
|
||||
const Droptable gObjectDroptables[] = {
|
||||
[0] = { {
|
||||
.none = 0,
|
||||
.rupee1 = 10,
|
||||
|
|
@ -1065,7 +1065,7 @@ const Droptable gUnk_0800191C[] = {
|
|||
};
|
||||
|
||||
// special treatment for shells and kinstones after finishing figurines/fusions
|
||||
const Droptable gDroptablesModifiers[] = {
|
||||
const Droptable gDroptableModifiers[] = {
|
||||
// nop
|
||||
{ {
|
||||
.none = 0,
|
||||
|
|
|
|||
|
|
@ -39,11 +39,6 @@ static void LoadDestructibleTile(TileEntity*);
|
|||
static void LoadGrassDropTile(TileEntity*);
|
||||
static void LoadLocationTile(TileEntity*);
|
||||
|
||||
typedef struct {
|
||||
u8 filler[0x20];
|
||||
} VarStruct;
|
||||
extern VarStruct gDroptablesAreas[];
|
||||
|
||||
void LoadRoomEntityList(EntityData* listPtr) {
|
||||
if (listPtr != NULL) {
|
||||
while (listPtr->kind != 0xFF) {
|
||||
|
|
@ -302,7 +297,7 @@ void LoadRoomTileEntities(TileEntity* list) {
|
|||
}
|
||||
|
||||
static void LoadGrassDropTile(TileEntity* tile) {
|
||||
MemCopy(&gDroptablesAreas[tile->_1], &gRoomVars.filler4[44], 0x20);
|
||||
MemCopy(&gAreaDroptables[tile->_1], &gRoomVars.currentAreaDroptable, 0x20);
|
||||
}
|
||||
|
||||
static void LoadLocationTile(TileEntity* tile) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue