sub_805124C

This commit is contained in:
DizzyEggg 2024-11-15 15:35:02 +01:00
parent cf71f88356
commit 973838de7a
8 changed files with 193 additions and 439 deletions

View File

@ -5,410 +5,6 @@
.text
thumb_func_start sub_8050F90
sub_8050F90:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x3C
str r0, [sp]
str r1, [sp, 0x4]
str r2, [sp, 0x8]
str r3, [sp, 0xC]
movs r0, 0
str r0, [sp, 0x10]
movs r1, 0
str r1, [sp, 0x14]
movs r2, 0
b _080511D0
_08050FB0:
movs r4, 0
str r4, [sp, 0x18]
ldr r5, [sp, 0x1C]
adds r5, 0x1
str r5, [sp, 0x28]
ldr r6, [sp, 0x4]
cmp r4, r6
blt _08050FC2
b _080511CE
_08050FC2:
ldr r1, [sp, 0x18]
lsls r0, r1, 2
ldr r2, [sp, 0xC]
adds r0, r2
ldr r3, [r0]
adds r4, r3, 0x2
mov r9, r4
ldr r5, [sp, 0x1C]
lsls r1, r5, 2
ldr r6, [sp, 0x5C]
adds r1, r6
ldr r2, [r1]
adds r4, r2, 0x2
mov r10, r4
ldr r0, [r0, 0x4]
subs r0, r3
subs r4, r0, 0x4
ldr r0, [r1, 0x4]
subs r0, r2
subs r7, r0, 0x4
movs r3, 0x5
movs r5, 0x5
ldr r6, [sp, 0x4]
cmp r6, 0x2
bgt _08050FF8
movs r3, 0xA
movs r4, 0xE
_08050FF8:
ldr r0, [sp, 0x8]
cmp r0, 0x1
bne _08051002
movs r5, 0x10
movs r7, 0x18
_08051002:
ldr r2, [sp, 0x1C]
lsls r1, r2, 5
ldr r6, [sp, 0x18]
lsls r2, r6, 4
subs r0, r2, r6
lsls r0, 5
ldr r6, [sp]
adds r0, r6
adds r6, r1, r0
ldrb r0, [r6, 0xA]
str r1, [sp, 0x30]
str r2, [sp, 0x2C]
cmp r0, 0
bne _08051020
b _08051130
_08051020:
ldr r0, [sp, 0x14]
ldr r1, [sp, 0x60]
cmp r0, r1
beq _0805108C
adds r0, r3, 0
adds r1, r4, 0
bl DungeonRandRange
adds r6, r0, 0
adds r0, r5, 0
adds r1, r7, 0
bl DungeonRandRange
adds r5, r0, 0
movs r1, 0x1
adds r0, r6, 0
orrs r0, r1
cmp r0, r4
bge _08051048
adds r6, r0, 0
_08051048:
adds r0, r5, 0
orrs r0, r1
cmp r0, r7
bge _08051052
adds r5, r0, 0
_08051052:
lsls r0, r5, 1
adds r0, r5
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
cmp r6, r0
ble _08051062
adds r6, r0, 0
_08051062:
lsls r0, r6, 1
adds r0, r6
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
cmp r5, r0
ble _08051072
adds r5, r0, 0
_08051072:
subs r0, r4, r6
bl DungeonRandInt
mov r2, r9
adds r4, r0, r2
subs r0, r7, r5
bl DungeonRandInt
mov r3, r10
adds r7, r0, r3
adds r3, r4, r6
adds r6, r7, r5
b _08051098
_0805108C:
mov r4, r9
mov r7, r10
ldr r5, [sp, 0x64]
adds r3, r4, r5
ldr r0, [sp, 0x68]
adds r6, r7, r0
_08051098:
ldr r1, [sp, 0x2C]
ldr r2, [sp, 0x18]
subs r0, r1, r2
lsls r0, 5
ldr r5, [sp]
adds r0, r5
ldr r1, [sp, 0x30]
adds r0, r1, r0
strh r4, [r0]
strh r3, [r0, 0x4]
strh r7, [r0, 0x2]
strh r6, [r0, 0x6]
adds r5, r4, 0
ldr r2, [sp, 0x10]
adds r2, 0x1
str r2, [sp, 0x20]
ldr r4, [sp, 0x14]
adds r4, 0x1
str r4, [sp, 0x24]
ldr r0, [sp, 0x18]
adds r0, 0x1
mov r10, r0
cmp r5, r3
bge _08051108
_080510C8:
adds r4, r7, 0
adds r1, r5, 0x1
mov r8, r1
cmp r4, r6
bge _08051102
ldr r2, _0805112C
mov r9, r2
_080510D6:
adds r0, r5, 0
adds r1, r4, 0
str r3, [sp, 0x38]
bl GetTileSafe
ldrh r1, [r0]
mov r2, r9
ands r1, r2
movs r2, 0x1
orrs r1, r2
strh r1, [r0]
adds r0, r5, 0
adds r1, r4, 0
bl GetTileSafe
mov r1, sp
ldrb r1, [r1, 0x10]
strb r1, [r0, 0x9]
adds r4, 0x1
ldr r3, [sp, 0x38]
cmp r4, r6
blt _080510D6
_08051102:
mov r5, r8
cmp r5, r3
blt _080510C8
_08051108:
ldr r2, [sp, 0x14]
ldr r3, [sp, 0x60]
cmp r2, r3
beq _08051124
ldr r4, [sp, 0x2C]
ldr r5, [sp, 0x18]
subs r0, r4, r5
lsls r0, 5
ldr r6, [sp]
adds r0, r6
ldr r1, [sp, 0x30]
adds r0, r1, r0
movs r1, 0x1
strb r1, [r0, 0x1D]
_08051124:
ldr r2, [sp, 0x20]
str r2, [sp, 0x10]
b _080511BE
.align 2, 0
_0805112C: .4byte 0x0000fffc
_08051130:
movs r1, 0x2
movs r3, 0x4
movs r2, 0x2
mov r8, r3
ldr r5, [sp, 0x18]
cmp r5, 0
bne _08051140
movs r1, 0x1
_08051140:
ldr r0, [sp, 0x1C]
cmp r0, 0
bne _08051148
movs r2, 0x1
_08051148:
ldr r0, [sp, 0x4]
subs r0, 0x1
ldr r5, [sp, 0x18]
cmp r5, r0
bne _08051154
movs r3, 0x2
_08051154:
ldr r0, [sp, 0x8]
subs r0, 0x1
ldr r5, [sp, 0x1C]
cmp r5, r0
bne _08051162
movs r0, 0x2
mov r8, r0
_08051162:
mov r5, r9
adds r0, r5, r1
adds r1, r5, r4
subs r1, r3
str r2, [sp, 0x34]
bl DungeonRandRange
adds r5, r0, 0
ldr r2, [sp, 0x34]
mov r1, r10
adds r0, r1, r2
adds r1, r7
mov r2, r8
subs r1, r2
bl DungeonRandRange
adds r4, r0, 0
strh r5, [r6]
adds r0, r5, 0x1
strh r0, [r6, 0x4]
strh r4, [r6, 0x2]
adds r0, r4, 0x1
strh r0, [r6, 0x6]
adds r0, r5, 0
adds r1, r4, 0
bl GetTileSafe
ldrh r1, [r0]
ldr r3, _080511EC
adds r2, r3, 0
ands r1, r2
movs r2, 0x1
orrs r1, r2
strh r1, [r0]
adds r0, r5, 0
adds r1, r4, 0
bl GetTileSafe
movs r1, 0xFF
strb r1, [r0, 0x9]
ldr r4, [sp, 0x14]
adds r4, 0x1
str r4, [sp, 0x24]
ldr r5, [sp, 0x18]
adds r5, 0x1
mov r10, r5
_080511BE:
ldr r6, [sp, 0x24]
str r6, [sp, 0x14]
mov r0, r10
str r0, [sp, 0x18]
ldr r1, [sp, 0x4]
cmp r0, r1
bge _080511CE
b _08050FC2
_080511CE:
ldr r2, [sp, 0x28]
_080511D0:
str r2, [sp, 0x1C]
ldr r3, [sp, 0x8]
cmp r2, r3
bge _080511DA
b _08050FB0
_080511DA:
add sp, 0x3C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080511EC: .4byte 0x0000fffc
thumb_func_end sub_8050F90
thumb_func_start sub_80511F0
sub_80511F0:
push {r4-r6,lr}
ldr r6, _08051204
ldrb r0, [r6]
cmp r0, 0
beq _0805120C
subs r0, 0x1
strb r0, [r6]
ldr r0, _08051208
ldrb r0, [r0]
b _08051244
.align 2, 0
_08051204: .4byte gUnknown_202F1E1
_08051208: .4byte gUnknown_202F1E0
_0805120C:
ldr r1, _0805122C
ldr r5, _08051230
ldr r2, [r5]
ldrb r3, [r2]
strb r3, [r1]
adds r4, r2, 0x1
str r4, [r5]
lsls r0, r3, 24
lsrs r0, 24
cmp r0, 0xE
bne _08051234
ldrb r0, [r2, 0x1]
strb r0, [r1]
adds r0, r4, 0x1
str r0, [r5]
b _08051242
.align 2, 0
_0805122C: .4byte gUnknown_202F1E0
_08051230: .4byte gUnknown_202F1DC
_08051234:
movs r0, 0xF
ands r0, r3
strb r0, [r6]
movs r0, 0xF0
ands r0, r3
lsrs r0, 4
strb r0, [r1]
_08051242:
ldrb r0, [r1]
_08051244:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80511F0
thumb_func_start sub_805124C
sub_805124C:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
ldr r5, [sp, 0x1C]
lsls r1, 24
lsrs r1, 24
lsls r5, 24
lsrs r5, 24
ldrh r6, [r0]
movs r7, 0x80
lsls r7, 1
adds r4, r7, 0
movs r7, 0
mov r8, r7
orrs r4, r6
strh r4, [r0]
mov r4, r8
strb r4, [r0, 0xE]
str r5, [sp]
bl sub_8051A74
lsls r0, 24
lsrs r0, 24
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_805124C
thumb_func_start sub_8051288
sub_8051288:

View File

@ -356,7 +356,7 @@ typedef struct Dungeon
/* 0x3A0E */ s16 tileset;
/* 0x3A10 */ s16 unk3A10;
/* 0x3A12 */ s16 unk3A12;
/* 0x3A14 */ s16 bossBattleIndex;
/* 0x3A14 */ s16 fixedRoomId;
/* 0x3A16 */ s16 unk3A16;
/* 0x3A18 */ Tile tiles[DUNGEON_MAX_SIZE_Y][DUNGEON_MAX_SIZE_X];
/* 0xEA18 */ Position playerSpawn;

View File

@ -610,7 +610,7 @@ void xxx_dungeon_8042F6C(struct UnkStruct_xxx_dungeon_8042F6C *r8)
gDungeon->weather.weather = 0;
gDungeon->tileset = gDungeon->unk1C574.unk2;
gDungeon->unk3A10 = gDungeon->unk1C574.unk3;
gDungeon->bossBattleIndex = gDungeon->unk1C574.unk12;
gDungeon->fixedRoomId = gDungeon->unk1C574.unk12;
sub_807E5E4(0);
sub_80842F0();
}

View File

@ -196,13 +196,13 @@ bool8 sub_806F660(Entity *pokemon,Entity *target)
targetInfo = target->info;
iVar8 = -1;
size = GetBodySize(targetInfo->apparentID);
if ((1 < ((u16)(gDungeon->bossBattleIndex - 4))) && (gDungeon->bossBattleIndex != 9) && (gDungeon->bossBattleIndex != 0xf)) {
if ((u16)(gDungeon->bossBattleIndex - 0x2cU) < 5) {
if ((1 < ((u16)(gDungeon->fixedRoomId - 4))) && (gDungeon->fixedRoomId != 9) && (gDungeon->fixedRoomId != 0xf)) {
if ((u16)(gDungeon->fixedRoomId - 0x2cU) < 5) {
if (gDungeon->unk65C == 0) {
return FALSE;
}
}
else if (gDungeon->bossBattleIndex == 0x31) {
else if (gDungeon->fixedRoomId == 0x31) {
if (gDungeon->fill655[4] == 0) {
return FALSE;
}

View File

@ -20,18 +20,18 @@ void sub_8084854(struct unkData_8107234 *);
void sub_80847D4(void)
{
u32 bossBattleIndex;
u32 fixedRoomId;
s32 index;
gDungeon->unk3A0D = 0;
gDungeon->unk1356C = 0;
sub_8040A84();
for(index = 0; index < 0x3e7 && gUnknown_8107234[index].unk0[0] != 0; index++) {
bossBattleIndex = gDungeon->bossBattleIndex;
if (bossBattleIndex - 0x1c < 0x16) {
bossBattleIndex = 0x1b;
fixedRoomId = gDungeon->fixedRoomId;
if (fixedRoomId - 0x1c < 0x16) {
fixedRoomId = 0x1b;
}
if (bossBattleIndex == gUnknown_8107234[index].unk0[0])
if (fixedRoomId == gUnknown_8107234[index].unk0[0])
{
sub_8084854(&gUnknown_8107234[index]);
break;

View File

@ -34,7 +34,7 @@ static bool8 xxx_dungeon_80442D0(bool8);
bool8 IsBossFight()
{
if (gDungeon->bossBattleIndex != 0 && gDungeon->bossBattleIndex <= 0x31)
if (gDungeon->fixedRoomId != 0 && gDungeon->fixedRoomId <= 0x31)
{
return TRUE;
}

View File

@ -66,10 +66,10 @@ struct GridCell
#define GRID_CELL_LEN 15
void sub_804C790(s32 gridSizeX, s32 gridSizeY, s32 x2, s32 y2, s32 a4, UnkDungeonGlobal_unk1C574 *unkPtr);
void sub_8050F90(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 gridSizeX, s32 gridSizeY, s32 *listX, s32 *listY, s32 a5, s32 x2, s32 y2);
void sub_8051438(struct GridCell *gridCell, s32 a1);
extern void sub_8051288(s32 a0);
static void sub_804C790(s32 gridSizeX, s32 gridSizeY, s32 fixedRoomSizeX, s32 fixedRoomSizeY, s32 fixedRoomId, UnkDungeonGlobal_unk1C574 *unkPtr);
static void CreateRoomsAndAnchorsForFixedFloor(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 gridSizeX, s32 gridSizeY, s32 *listX, s32 *listY, s32 a5, s32 fixedRoomSizeX, s32 fixedRoomSizeY);
void sub_8051438(struct GridCell *gridCell, s32 fixedRoomId);
void sub_8051288(s32 fixedRoomId);
void GetGridPositions(s32 *listX, s32 *listY, s32 gridSizeX, s32 gridSizeY);
void InitDungeonGrid(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 gridSizeX, s32 gridSizeY);
void GenerateRoomImperfections(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 gridSizeX, s32 gridSizeY);
@ -94,7 +94,7 @@ void sub_804FC74(void);
void sub_804EB30(void);
void sub_804E9DC(void);
void sub_804B534(s32 a0, s32 a1, s32 a2, s32 a3);
bool8 sub_804C70C(s32, UnkDungeonGlobal_unk1C574 *);
bool8 GenerateFixedFloor(s32 fixedRoomId, UnkDungeonGlobal_unk1C574 *unkPtr);
void GenerateStandardFloor(s32 a0, s32 a1, UnkDungeonGlobal_unk1C574 *a2);
void GenerateOuterRingFloor(UnkDungeonGlobal_unk1C574 *a0);
void GenerateCrossroadsFloor(UnkDungeonGlobal_unk1C574 *a0);
@ -210,8 +210,9 @@ void sub_804AFAC(void)
gDungeon->playerSpawn.x = -1;
gDungeon->playerSpawn.y = -1;
gDungeon->forceMonsterHouse = 0;
if (gDungeon->bossBattleIndex != 0) {
if (sub_804C70C(gDungeon->bossBattleIndex, unkPtr)) {
if (gDungeon->fixedRoomId != 0) {
// Check for a full-floor fixed room, if this is the case, generation is done.
if (GenerateFixedFloor(gDungeon->fixedRoomId, unkPtr)) {
break;
}
}
@ -545,7 +546,7 @@ void NAKED sub_804AFAC(void)
" cmp r0, 0\n"
" beq _0804B164\n"
" mov r1, r8\n"
" bl sub_804C70C\n"
" bl GenerateFixedFloor\n"
" lsls r0, 24\n"
" cmp r0, 0\n"
" beq _0804B0E4\n"
@ -1644,34 +1645,34 @@ void GenerateOuterRoomsFloor(s32 gridSizeX_, s32 gridSizeY_, UnkDungeonGlobal_un
GenerateSecondaryStructures(grid, gridSizeX, gridSizeY);
}
bool8 sub_804C70C(s32 a0, UnkDungeonGlobal_unk1C574 *unkPtr)
bool8 GenerateFixedFloor(s32 fixedRoomId, UnkDungeonGlobal_unk1C574 *unkPtr)
{
struct PositionU8 **fileData = (void *) gDungeon->unk13568->data;
s32 x1 = fileData[a0]->x;
s32 y1 = fileData[a0]->y;
s32 fixedRoomSizeX = fileData[fixedRoomId]->x;
s32 fixedRoomSizeY = fileData[fixedRoomId]->y;
s32 gridSizeX, gridSizeY;
if (x1 == 0 || y1 == 0) {
if (fixedRoomSizeX == 0 || fixedRoomSizeY == 0) {
GenerateOneRoomMonsterHouseFloor();
return FALSE;
}
else if (a0 < 50) {
sub_8051288(a0);
else if (fixedRoomId < 50) {
sub_8051288(fixedRoomId);
return TRUE;
}
else {
gridSizeX = DUNGEON_MAX_SIZE_X / (x1 + 4);
gridSizeX = DUNGEON_MAX_SIZE_X / (fixedRoomSizeX + 4);
if (gridSizeX <= 1)
gridSizeX = 1;
gridSizeY = DUNGEON_MAX_SIZE_Y / (y1 + 4);
gridSizeY = DUNGEON_MAX_SIZE_Y / (fixedRoomSizeY + 4);
if (gridSizeY <= 1)
gridSizeY = 1;
sub_804C790(gridSizeX, gridSizeY, x1, y1, a0, unkPtr);
sub_804C790(gridSizeX, gridSizeY, fixedRoomSizeX, fixedRoomSizeY, fixedRoomId, unkPtr);
return FALSE;
}
}
void sub_804C790(s32 gridSizeX, s32 gridSizeY, s32 x2, s32 y2, s32 a4, UnkDungeonGlobal_unk1C574 *unkPtr)
static void sub_804C790(s32 gridSizeX, s32 gridSizeY, s32 fixedRoomSizeX, s32 fixedRoomSizeY, s32 fixedRoomId, UnkDungeonGlobal_unk1C574 *unkPtr)
{
s32 tries;
struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN];
@ -1696,13 +1697,13 @@ void sub_804C790(s32 gridSizeX, s32 gridSizeY, s32 x2, s32 y2, s32 a4, UnkDungeo
if (grid[cursorX][cursorY].isRoom)
break;
}
sub_8050F90(grid, gridSizeX, gridSizeY, listX, listY, r10, x2, y2);
CreateRoomsAndAnchorsForFixedFloor(grid, gridSizeX, gridSizeY, listX, listY, r10, fixedRoomSizeX, fixedRoomSizeY);
if (gridSizeX != 1 || gridSizeY != 1) {
AssignGridCellConnections(grid, gridSizeX, gridSizeY, cursorX, cursorY, unkPtr);
CreateGridCellConnections(grid, gridSizeX, gridSizeY, listX, listY, TRUE);
EnsureConnectedGrid(grid, gridSizeX, gridSizeY, listX, listY);
}
sub_8051438(&grid[cursorX][cursorY], a4);
sub_8051438(&grid[cursorX][cursorY], fixedRoomId);
}
/*
@ -6264,10 +6265,167 @@ bool8 StairsAlwaysReachable(s32 stairsX, s32 stairsY, bool8 markUnreachable)
return TRUE;
}
/*
void sub_8050F90(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 gridSizeX, s32 gridSizeY, s32 *listX, s32 *listY, s32 a5, s32 x2, s32 y2)
static void CreateRoomsAndAnchorsForFixedFloor(struct GridCell grid[GRID_CELL_LEN][GRID_CELL_LEN], s32 gridSizeX, s32 gridSizeY, s32 *listX, s32 *listY, s32 a5, s32 fixedRoomSizeX, s32 fixedRoomSizeY)
{
s32 roomNumber = 0;
s32 var_48 = 0;
s32 x, y;
for (y = 0; y < gridSizeY; y++) {
for (x = 0; x < gridSizeX; var_48++, x++) {
s32 minX = listX[x] + 2;
s32 minY = listY[y] + 2;
s32 rangeX = listX[x + 1] - listX[x] - 4;
s32 rangeY = listY[y + 1] - listY[y] - 4;
s32 minRoomSizeX = 5;
s32 minRoomSizeY = 5;
if (gridSizeX <= 2) {
minRoomSizeX = 10;
rangeX = 14;
}
if (gridSizeY == 1) {
minRoomSizeY = 16;
rangeY = 24;
}
if (grid[x][y].isRoom) {
// This cell is a room!
s32 roomSizeX, roomSizeY;
s32 startX, endX;
s32 startY, endY;
s32 roomX, roomY;
if (var_48 != a5) {
roomSizeX = DungeonRandRange(minRoomSizeX, rangeX);
roomSizeY = DungeonRandRange(minRoomSizeY, rangeY);
// Force small rooms to have odd-numbered dimensions (?)
if ((roomSizeX | 1) < rangeX) {
roomSizeX |= 1;
}
if ((roomSizeY | 1) < rangeY) {
roomSizeY |= 1;
}
// Aspect ratio 2/3 < x/y < 3/2
if (roomSizeX > (roomSizeY * 3) / 2) {
roomSizeX = (roomSizeY * 3) / 2;
}
if (roomSizeY > (roomSizeX * 3) / 2) {
roomSizeY = (roomSizeX * 3) / 2;
}
startX = DungeonRandInt(rangeX - roomSizeX) + minX;
startY = DungeonRandInt(rangeY - roomSizeY) + minY;
endX = startX + roomSizeX;
endY = startY + roomSizeY;
}
else {
startX = minX;
startY = minY;
endX = startX + fixedRoomSizeX;
endY = startY + fixedRoomSizeY;
}
// Create the room!
grid[x][y].start.x = startX;
grid[x][y].end.x = endX;
grid[x][y].start.y = startY;
grid[x][y].end.y = endY;
for (roomX = startX; roomX < endX; roomX++) {
for (roomY = startY; roomY < endY; roomY++) {
SetTerrainNormal(GetTileSafe(roomX, roomY));
GetTileSafe(roomX, roomY)->room = roomNumber;
}
}
if (var_48 != a5) {
grid[x][y].flagSecondaryStructure = TRUE;
}
roomNumber++;
}
else {
// This cell is not a room, create a 1x1 hallway anchor
s32 pt_x, pt_y;
s32 unk_x1 = 2;
s32 unk_x2 = 4;
s32 unk_y1 = 2;
s32 unk_y2 = 4;
if (x == 0) {
unk_x1 = 1;
}
if (y == 0) {
unk_y1 = 1;
}
if (x == gridSizeX - 1) {
unk_x2 = 2;
}
if (y == gridSizeY - 1) {
unk_y2 = 2;
}
pt_x = DungeonRandRange(minX + unk_x1, minX + rangeX - unk_x2);
pt_y = DungeonRandRange(minY + unk_y1, minY + rangeY - unk_y2);
grid[x][y].start.x = pt_x;
grid[x][y].end.x = pt_x + 1;
grid[x][y].start.y = pt_y;
grid[x][y].end.y = pt_y + 1;
// Flag the tile as open to serve as a hallway anchor
SetTerrainNormal(GetTileSafe(pt_x, pt_y));
// Set the room index to 0xFE for anchor
GetTileSafe(pt_x, pt_y)->room = CORRIDOR_ROOM;
}
}
}
}
extern u8 *gUnknown_202F1DC;
extern u8 gUnknown_202F1E0;
extern u8 gUnknown_202F1E1;
u8 sub_80511F0(void)
{
if (gUnknown_202F1E1 != 0) {
gUnknown_202F1E1--;
return gUnknown_202F1E0;
}
gUnknown_202F1E0 = *gUnknown_202F1DC;
gUnknown_202F1DC++;
if (gUnknown_202F1E0 == 14) {
gUnknown_202F1E0 = *gUnknown_202F1DC;
gUnknown_202F1DC++;
}
else {
gUnknown_202F1E1 = gUnknown_202F1E0 & 0xF;
gUnknown_202F1E0 = (gUnknown_202F1E0 & 0xF0) >> 4;
}
return gUnknown_202F1E0;
}
bool8 sub_8051A74(Tile *tile, u8 a1, s32 x, s32 y, u8 a5);
bool8 sub_805124C(Tile *tile, u8 a1, s32 x, s32 y, u8 a5)
{
tile->terrainType |= TERRAIN_TYPE_UNBREAKABLE;
tile->unkE = 0;
return sub_8051A74(tile, a1, x, y, a5);
}
/*
void sub_8051288(s32 fixedRoomId)
{
Dungeon *dungeon = gDungeon;
}
*/

View File

@ -492,7 +492,7 @@ void sub_8081454(unkStruct_8094924 *param_1)
sub_8083048(param_1, gDungeon->tileset);
sub_8083048(param_1,gDungeon->unk3A10);
sub_8083048(param_1, gDungeon->unk3A12);
sub_8083048(param_1, gDungeon->bossBattleIndex);
sub_8083048(param_1, gDungeon->fixedRoomId);
sub_8083048(param_1, gDungeon->unk3A16);
for(iVar1 = 0; iVar1 < DUNGEON_MAX_SIZE_Y; iVar1++)
{
@ -829,7 +829,7 @@ void sub_8081C7C(unkStruct_8094924 *r0)
gDungeon->tileset = sub_8083170(r0);
gDungeon->unk3A10 = sub_8083170(r0);
gDungeon->unk3A12 = sub_8083170(r0);
gDungeon->bossBattleIndex = sub_8083170(r0);
gDungeon->fixedRoomId = sub_8083170(r0);
gDungeon->unk3A16 = sub_8083170(r0);
for(y = 0; y < DUNGEON_MAX_SIZE_Y; y++)