diff --git a/asm/code_804FD30.s b/asm/code_804FD30.s index d4e137903..363ae5d28 100644 --- a/asm/code_804FD30.s +++ b/asm/code_804FD30.s @@ -6,225 +6,6 @@ .text - thumb_func_start sub_8051288 -sub_8051288: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - str r0, [sp, 0x4] - ldr r0, _08051374 - ldr r7, [r0] - ldr r0, _08051378 - adds r3, r7, r0 - ldr r0, [r3] - ldr r0, [r0, 0x4] - ldr r2, [sp, 0x4] - lsls r1, r2, 2 - adds r0, r1, r0 - ldr r0, [r0] - ldrb r2, [r0] - mov r10, r2 - ldrb r0, [r0, 0x1] - mov r9, r0 - ldr r2, _0805137C - adds r0, r7, r2 - movs r4, 0 - mov r2, r10 - strh r2, [r0] - ldr r2, _08051380 - adds r0, r7, r2 - mov r2, r9 - strh r2, [r0] - ldr r2, _08051384 - ldr r0, [r3] - ldr r0, [r0, 0x4] - adds r1, r0 - ldr r0, [r1] - adds r0, 0x3 - str r0, [r2] - ldr r0, _08051388 - strb r4, [r0] - movs r6, 0x5 - mov r0, r9 - adds r0, 0x5 - cmp r6, r0 - bge _0805132E - movs r1, 0x5 - add r1, r10 - mov r8, r1 - str r0, [sp, 0x8] -_080512E8: - movs r5, 0x5 - cmp r5, r8 - bge _08051326 -_080512EE: - bl sub_80511F0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - adds r1, r6, 0 - bl GetTileSafe - movs r1, 0x1 - str r1, [sp] - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_805124C - lsls r0, 24 - cmp r0, 0 - beq _08051320 - ldr r2, _0805138C - adds r0, r7, r2 - strh r5, [r0] - ldr r1, _08051390 - adds r0, r7, r1 - strh r6, [r0] -_08051320: - adds r5, 0x1 - cmp r5, r8 - blt _080512EE -_08051326: - adds r6, 0x1 - ldr r2, [sp, 0x8] - cmp r6, r2 - blt _080512E8 -_0805132E: - movs r6, 0 - ldr r0, _08051394 - adds r7, r0, 0 -_08051334: - movs r5, 0 - adds r4, r6, 0x1 -_08051338: - cmp r5, 0x4 - ble _08051350 - mov r0, r10 - adds r0, 0x5 - cmp r5, r0 - bge _08051350 - cmp r6, 0x4 - ble _08051350 - mov r0, r9 - adds r0, 0x5 - cmp r6, r0 - blt _080513A0 -_08051350: - adds r0, r5, 0 - adds r1, r6, 0 - bl GetTileSafe - adds r2, r0, 0 - ldrh r1, [r2] - movs r0, 0x10 - movs r3, 0 - orrs r1, r0 - strh r1, [r2] - ldr r0, _08051398 - ldrb r0, [r0] - cmp r0, 0 - beq _0805139C - ands r1, r7 - movs r0, 0x3 - orrs r1, r0 - b _0805139E - .align 2, 0 -_08051374: .4byte gDungeon -_08051378: .4byte 0x00013568 -_0805137C: .4byte 0x0000e260 -_08051380: .4byte 0x0000e262 -_08051384: .4byte gUnknown_202F1DC -_08051388: .4byte gUnknown_202F1E1 -_0805138C: .4byte 0x0000e21c -_08051390: .4byte 0x0000e21e -_08051394: .4byte 0x0000fffc -_08051398: .4byte gUnknown_202F1A8 -_0805139C: - ands r1, r7 -_0805139E: - strh r1, [r2] -_080513A0: - adds r5, 0x1 - cmp r5, 0x37 - ble _08051338 - adds r6, r4, 0 - cmp r6, 0x1F - ble _08051334 - ldr r1, [sp, 0x4] - cmp r1, 0x4 - bne _080513DA - movs r6, 0x5 - ldr r2, _0805142C - adds r7, r2, 0 -_080513B8: - movs r5, 0x2 - adds r4, r6, 0x1 -_080513BC: - adds r0, r5, 0 - adds r1, r6, 0 - bl GetTileSafe - ldrh r2, [r0] - movs r1, 0x10 - orrs r1, r2 - ands r1, r7 - strh r1, [r0] - adds r5, 0x1 - cmp r5, 0x4 - ble _080513BC - adds r6, r4, 0 - cmp r6, 0x10 - ble _080513B8 -_080513DA: - ldr r0, _08051430 - ldr r0, [r0] - ldr r1, _08051434 - adds r0, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0x3F - ble _08051416 - movs r6, 0 -_080513EC: - movs r5, 0 - adds r4, r6, 0x1 -_080513F0: - adds r0, r5, 0 - adds r1, r6, 0 - bl GetTileSafe - adds r2, r0, 0 - ldrh r1, [r2] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0805140A - movs r0, 0x10 - orrs r0, r1 - strh r0, [r2] -_0805140A: - adds r5, 0x1 - cmp r5, 0x37 - ble _080513F0 - adds r6, r4, 0 - cmp r6, 0x1F - ble _080513EC -_08051416: - bl sub_804E9DC - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805142C: .4byte 0x0000fffc -_08051430: .4byte gDungeon -_08051434: .4byte 0x00003a0e - thumb_func_end sub_8051288 - thumb_func_start sub_8051438 sub_8051438: push {r4-r7,lr} diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index 58968d4af..aa6a04abd 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -365,7 +365,7 @@ typedef struct Dungeon struct MinMaxPosition kecleonShopPos; u32 unkE250; u8 fillE254[0xE260 - 0xE254]; - u32 unkE260; + Position unkE260; /* 0xE264 */ Weather weather; // Uses the weather constants in weather.h. /* 0xE27C */ Tile unkE27C[8][8]; /* 0xE87C */ u8 unkE87C[8][8]; diff --git a/src/dungeon_generation.c b/src/dungeon_generation.c index c97dd7555..79eb6cde0 100644 --- a/src/dungeon_generation.c +++ b/src/dungeon_generation.c @@ -6422,11 +6422,61 @@ bool8 sub_805124C(Tile *tile, u8 a1, s32 x, s32 y, u8 a5) return sub_8051A74(tile, a1, x, y, a5); } -/* void sub_8051288(s32 fixedRoomId) { + s32 x, y; Dungeon *dungeon = gDungeon; + struct PositionU8 **fileData = (void *) dungeon->unk13568->data; + s32 fixedRoomSizeX = fileData[fixedRoomId]->x; + s32 fixedRoomSizeY = fileData[fixedRoomId]->y; + + dungeon->unkE260.x = fixedRoomSizeX; + dungeon->unkE260.y = fixedRoomSizeY; + // FIX ME + gUnknown_202F1DC = ((u8 **)(dungeon->unk13568->data))[fixedRoomId] + 3; + gUnknown_202F1E1 = 0; + for (x = 5; x < fixedRoomSizeX + 5; x++) { + for (y = 5; y < fixedRoomSizeY + 5; y++) { + u8 unk = sub_80511F0(); + if (sub_805124C(GetTileSafe(x, y), unk, x, y, 1)) { + dungeon->unkE260.x = x; + dungeon->unkE260.y = y; + } + } + } + + for (x = 0; x < DUNGEON_MAX_SIZE_X; x++) { + for (y = 0; y < DUNGEON_MAX_SIZE_Y; y++) { + if (y > 4) + + Tile *tile = GetTileSafe(x, y); + if (GetTerrainType(tile) == TERRAIN_TYPE_WALL) { + tile->terrainType |= TERRAIN_TYPE_IMPASSABLE_WALL; + } + } + } + + if (fixedRoomId != 4) { + for (x = 0; x < 17; x++) { + for (y = 0; y < 5; y++) { + Tile *tile = GetTileSafe(x, y); + tile->terrainType |= TERRAIN_TYPE_IMPASSABLE_WALL; + } + } + } + + if (gDungeon->tileset < 64) { + for (x = 0; x < DUNGEON_MAX_SIZE_X; x++) { + for (y = 0; y < DUNGEON_MAX_SIZE_Y; y++) { + Tile *tile = GetTileSafe(x, y); + if (GetTerrainType(tile) == TERRAIN_TYPE_WALL) { + tile->terrainType |= TERRAIN_TYPE_IMPASSABLE_WALL; + } + } + } + } + + sub_804E9DC(); } -*/ // diff --git a/src/trap_1.c b/src/trap_1.c index c24259b93..aed00072f 100644 --- a/src/trap_1.c +++ b/src/trap_1.c @@ -18,7 +18,7 @@ extern void sub_8082FA8(unkStruct_8094924 *, void *, s32); void SaveTile(unkStruct_8094924 *r0, Tile *tile); void sub_80830F8(void * , void*); -void sub_808312C(void *, u32 *); +void sub_808312C(void *, void *); void SaveDungeonWeather(unkStruct_8094924 *r0, Weather *weather); void sub_8083078(void *, u32); void sub_80830B4(void *, u8);