diff --git a/src/sm_80.c b/src/sm_80.c index 58a5692..d1ef27d 100644 --- a/src/sm_80.c +++ b/src/sm_80.c @@ -425,14 +425,14 @@ void QueueMode7Transfers(uint8 db, uint16 k) { // 0x808B4F int f = GET_BYTE(p); if (f & 0x80) { *(uint16 *)(&mode7_write_queue[0].field_0 + v2) = GET_WORD(p); - *(uint16 *)((char *)&mode7_write_queue[0].field_1 + v2 + 1) = GET_WORD(p + 2); + *(uint16 *)((uint8 *)&mode7_write_queue[0].field_1 + v2 + 1) = GET_WORD(p + 2); *(uint16 *)&mode7_write_queue[0].gap3[v2 + 1] = GET_WORD(p + 4); *(uint16 *)&mode7_write_queue[0].gap3[v2 + 3] = GET_WORD(p + 6); - *(uint16 *)((char *)&mode7_write_queue[1].field_1 + v2) = p[8]; + *(uint16 *)((uint8 *)&mode7_write_queue[1].field_1 + v2) = p[8]; p += 9, v2 += 9; } else if (f & 0x40) { *(uint16 *)(&mode7_write_queue[0].field_0 + v2) = GET_WORD(p); - *(uint16 *)((char *)&mode7_write_queue[0].field_1 + v2 + 1) = GET_WORD(p + 2); + *(uint16 *)((uint8 *)&mode7_write_queue[0].field_1 + v2 + 1) = GET_WORD(p + 2); *(uint16 *)&mode7_write_queue[0].gap3[v2 + 1] = GET_WORD(p + 4); *(uint16 *)&mode7_write_queue[0].gap3[v2 + 3] = p[6]; p += 7, v2 += 7; @@ -632,7 +632,7 @@ void NMI_ProcessVramReadQueue(void) { // 0x808EA2 ReadRegWord(RDVRAML); WriteRegWord(DMAP1, vram_read_queue[v0].dma_parameters); WriteRegWord(A1T1L, vram_read_queue[v0].src.addr); - WriteRegWord(A1T1H, *(VoidP *)((char *)&vram_read_queue[v0].src.addr + 1)); + WriteRegWord(A1T1H, *(VoidP *)((uint8 *)&vram_read_queue[v0].src.addr + 1)); WriteRegWord(DAS1L, vram_read_queue[v0].size); WriteRegWord(DAS10, 0); WriteRegWord(A2A1H, 0); @@ -661,7 +661,7 @@ void HandleMusicQueue(void) { // 0x808F0C if ((music_entry & 0x8000u) != 0) { music_data_index = (uint8)music_entry; cur_music_track = -1; - copy24(&R0_, (LongPtr *)((char *)&kMusicPointers + (uint8)music_entry)); + copy24(&R0_, (LongPtr *)((uint8 *)&kMusicPointers + (uint8)music_entry)); APU_UploadBank(); cur_music_track = 0; int v5 = music_queue_read_pos; @@ -691,7 +691,7 @@ void HandleMusicQueue(void) { // 0x808F0C } void QueueMusic_Delayed8(uint16 a) { // 0x808FC1 - char v1; + int8 v1; if (game_state < kGameState_40_TransitionToDemo && (((uint8)music_queue_write_pos + 2) & 0xE) != music_queue_read_pos) { v1 = music_queue_write_pos; @@ -1614,7 +1614,7 @@ void DrawTimer(void) { // 0x809F6C void DrawTwoTimerDigits(uint16 a, uint16 k) { // 0x809F95 - char v2; + int8 v2; v2 = a; DrawTimerSpritemap(k, kTimerDigitsSpritemapPtr[(uint16)((uint8)(a & 0xF0) >> 3) >> 1]); @@ -1729,7 +1729,7 @@ void DisplayViewablePartOfRoom(void) { // 0x80A176 void QueueClearingOfFxTilemap(void) { // 0x80A211 for (int i = 3838; i >= 0; i -= 2) - *(uint16 *)((char *)ram4000.xray_tilemaps + (uint16)i) = 6222; + *(uint16 *)((uint8 *)ram4000.xray_tilemaps + (uint16)i) = 6222; uint16 v1 = vram_write_queue_tail; VramWriteEntry *v2 = gVramWriteEntry(vram_write_queue_tail); v2->size = 3840; @@ -2145,8 +2145,8 @@ void UpdateLevelOrBackgroundDataColumn(uint16 k) { // 0x80A9DE copywithflip_src.addr = v2; copywithflip_src.bank = 127; uint16 v3 = (4 * (uint8)vram_blocks_to_update_y_block) & 0x3C; - *(uint16 *)((char *)&bg1_update_col_wrapped_size + k) = v3; - *(uint16 *)((char *)&bg1_update_col_unwrapped_size + k) = (v3 ^ 0x3F) + 1; + *(uint16 *)((uint8 *)&bg1_update_col_wrapped_size + k) = v3; + *(uint16 *)((uint8 *)&bg1_update_col_unwrapped_size + k) = (v3 ^ 0x3F) + 1; prod = Mult8x8(vram_blocks_to_update_y_block & 0xF, 0x40); x_block_of_vram_blocks_to_update = vram_blocks_to_update_x_block & 0x1F; uint16 v4 = 2 * x_block_of_vram_blocks_to_update; @@ -2157,8 +2157,8 @@ void UpdateLevelOrBackgroundDataColumn(uint16 k) { // 0x80A9DE if (k) v5 -= size_of_bg2; tmp_vram_base_addr = v5; - *(uint16 *)((char *)&bg1_update_col_unwrapped_dst + k) = temp933 + v5; - *(uint16 *)((char *)&bg1_update_col_wrapped_dst + k) = x_block_of_vram_blocks_to_update + *(uint16 *)((uint8 *)&bg1_update_col_unwrapped_dst + k) = temp933 + v5; + *(uint16 *)((uint8 *)&bg1_update_col_wrapped_dst + k) = x_block_of_vram_blocks_to_update + x_block_of_vram_blocks_to_update + tmp_vram_base_addr; uint16 v6 = ADDR16_OF_RAM(*bg1_column_update_tilemap_left_halves); @@ -2167,9 +2167,9 @@ void UpdateLevelOrBackgroundDataColumn(uint16 k) { // 0x80A9DE v6 = ADDR16_OF_RAM(*bg2_column_update_tilemap_left_halves); v7 = 264; } - uint16 v8 = *(uint16 *)((char *)&bg1_update_col_unwrapped_size + k) + v6; - *(uint16 *)((char *)&bg1_update_col_wrapped_left_src + k) = v8; - *(uint16 *)((char *)&bg1_update_col_wrapped_right_src + k) = v8 + 64; + uint16 v8 = *(uint16 *)((uint8 *)&bg1_update_col_unwrapped_size + k) + v6; + *(uint16 *)((uint8 *)&bg1_update_col_wrapped_left_src + k) = v8; + *(uint16 *)((uint8 *)&bg1_update_col_wrapped_right_src + k) = v8 + 64; tmp_vram_base_addr = v7; uint16 t2 = k; uint16 v9 = 0; @@ -2214,7 +2214,7 @@ void UpdateLevelOrBackgroundDataColumn(uint16 k) { // 0x80A9DE v9 = room_width_in_blocks * 2 + v17; --loopcounter; } while (loopcounter); - ++ *(uint16 *)((char *)&bg1_update_col_enable + t2); + ++ *(uint16 *)((uint8 *)&bg1_update_col_enable + t2); } } @@ -2236,8 +2236,8 @@ void UpdateLevelOrBackgroundDataRow(uint16 v0) { // 0x80AB78 copywithflip_src.addr = v2; copywithflip_src.bank = 127; temp933 = vram_blocks_to_update_x_block & 0xF; - *(uint16 *)((char *)&bg1_update_row_unwrapped_size + v0) = 4 * (16 - temp933); - *(uint16 *)((char *)&bg1_update_row_wrapped_size + v0) = 4 * (temp933 + 1); + *(uint16 *)((uint8 *)&bg1_update_row_unwrapped_size + v0) = 4 * (16 - temp933); + *(uint16 *)((uint8 *)&bg1_update_row_wrapped_size + v0) = 4 * (temp933 + 1); prod = Mult8x8(vram_blocks_to_update_y_block & 0xF, 0x40); x_block_of_vram_blocks_to_update = vram_blocks_to_update_x_block & 0x1F; uint16 v3 = 2 * x_block_of_vram_blocks_to_update; @@ -2250,20 +2250,20 @@ void UpdateLevelOrBackgroundDataRow(uint16 v0) { // 0x80AB78 } if (v0) v4 -= size_of_bg2; - *(uint16 *)((char *)&bg1_update_row_unwrapped_dst + v0) = temp933 + v4; + *(uint16 *)((uint8 *)&bg1_update_row_unwrapped_dst + v0) = temp933 + v4; uint16 v5 = tmp_vram_base_addr; if (v0) v5 = tmp_vram_base_addr - size_of_bg2; - *(uint16 *)((char *)&bg1_update_row_wrapped_dst + v0) = prod + v5; + *(uint16 *)((uint8 *)&bg1_update_row_wrapped_dst + v0) = prod + v5; uint16 v6 = ADDR16_OF_RAM(*bg1_column_update_tilemap_top_halves); uint16 v7 = 0; if (v0) { v6 = ADDR16_OF_RAM(*bg2_column_update_tilemap_top_halves); v7 = 264; } - uint16 v8 = *(uint16 *)((char *)&bg1_update_row_unwrapped_size + v0) + v6; - *(uint16 *)((char *)&bg1_update_row_wrapped_top_src + v0) = v8; - *(uint16 *)((char *)&bg1_update_row_wrapped_bottom_src + v0) = v8 + 68; + uint16 v8 = *(uint16 *)((uint8 *)&bg1_update_row_unwrapped_size + v0) + v6; + *(uint16 *)((uint8 *)&bg1_update_row_wrapped_top_src + v0) = v8; + *(uint16 *)((uint8 *)&bg1_update_row_wrapped_bottom_src + v0) = v8 + 68; tmp_vram_base_addr = v7; uint16 t2 = v0; uint16 v9 = 0; @@ -2308,7 +2308,7 @@ void UpdateLevelOrBackgroundDataRow(uint16 v0) { // 0x80AB78 v9 = v17 + 2; --loopcounter; } while (loopcounter); - ++ *(uint16 *)((char *)&bg1_update_row_enable + t2); + ++ *(uint16 *)((uint8 *)&bg1_update_row_enable + t2); } } diff --git a/src/sm_81.c b/src/sm_81.c index fdcba76..3fa6d24 100644 --- a/src/sm_81.c +++ b/src/sm_81.c @@ -44,7 +44,7 @@ void SaveToSram(uint16 a) { // 0x818000 uint16 R20 = 0; uint16 R18 = 2 * (a & 3); for (int i = 94; i >= 0; i -= 2) - player_data_saved[i >> 1] = *(uint16 *)((char *)&equipped_items + i); + player_data_saved[i >> 1] = *(uint16 *)((uint8 *)&equipped_items + i); uint16 v3 = area_index * 256; uint16 v4 = 0; do { @@ -90,7 +90,7 @@ uint8 LoadFromSram(uint16 a) { // 0x818085 if (R20_ == kSramChecksum[v4] && (R20_ ^ 0xffff) == kSramChecksumInverted[v4] || R20_ == kSramChecksumUpper[v4] && (R20_ ^ 0xffff) == kSramChecksumInvertedUpper[v4]) { for (int i = 94; i >= 0; i -= 2) - *(uint16 *)((char *)&equipped_items + i) = player_data_saved[i >> 1]; + *(uint16 *)((uint8 *)&equipped_items + i) = player_data_saved[i >> 1]; UnpackMapFromSave(); load_station_index = sram_save_station_index; area_index = sram_area_index; @@ -161,8 +161,8 @@ void PackMapToSave(void) { // 0x81834B void DrawSpritemap(uint8 db, uint16 j) { // 0x81879F int16 v7; OamEnt *v8; - char v13; - char v15; + int8 v13; + int8 v15; const uint16 *v2 = (const uint16 *)RomPtrWithBank(db, j); if (*v2) { @@ -236,8 +236,8 @@ LABEL_22: void DrawSpritemapOffScreen(uint16 j) { // 0x818853 int16 v6; OamEnt *v7; - char v12; - char v14; + int8 v12; + int8 v14; const uint16 *v1 = (const uint16 *)RomPtr_8C(j); if (*v1) { @@ -487,8 +487,8 @@ void DrawSpritemapWithBaseTileOffscreen(uint8 db, uint16 j, uint16 r20_x, uint16 void DrawEnemyProjectileSpritemapWithBaseTile(uint8 db, uint16 j) { // 0x818C0A int16 v6; OamEnt *v7; - char v10; - char v12; // cf + int8 v10; + int8 v12; // cf const uint16 *v2 = (const uint16 *)RomPtrWithBank(db, j); if (*v2) { @@ -539,8 +539,8 @@ LABEL_10: void DrawEnemyProjectileSpritemapWithBaseTileOffscreen(uint8 db, uint16 j) { // 0x818C7F int16 v6; OamEnt *v7; - char v10; - char v12; // cf + int8 v10; + int8 v12; // cf const uint16 *v2 = (const uint16 *)RomPtrWithBank(db, j); if (*v2) { @@ -960,7 +960,7 @@ void FileSelectMenu_32_FadeOutToOptions(void) { // 0x8194A3 menu_index = 0; int v0 = 0; do { - *(uint16 *)((char *)&enemy_projectile_enable_flag + v0) = 0; + *(uint16 *)((uint8 *)&enemy_projectile_enable_flag + v0) = 0; v0 += 2; } while ((int16)(v0 - 48) < 0); } @@ -1050,7 +1050,7 @@ void SetInitialFileCopyMenuSelection(void) { // 0x819593 void ClearMenuTilemap(void) { // 0x8195A6 for (int i = 2046; i >= 0; i -= 2) - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[768] + (uint16)i) = 15; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[768] + (uint16)i) = 15; } void LoadMenuExitTilemap(void) { // 0x8195B5 @@ -1375,8 +1375,8 @@ void FileSelectMenu_13_FileCopyDoIt(void) { // 0x819A2C int v6 = ((4 * enemy_projectile_id[17] + 9) << 6) + 24; int v7 = 0; do { - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[768] + v6) = 15; - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[736] + v6) = 15; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[768] + v6) = 15; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[736] + v6) = 15; v6 += 2; v7 += 2; } while ((int16)(v7 - 22) < 0); @@ -1597,16 +1597,16 @@ void DrawFileSelectSlotSamusHelmet(uint16 k) { // 0x819DE4 uint16 v0 = k; int16 v1; - v1 = *(uint16 *)((char *)&enemy_projectile_enable_flag + v0); + v1 = *(uint16 *)((uint8 *)&enemy_projectile_enable_flag + v0); if (v1) { uint16 v2 = v1 - 1; - *(uint16 *)((char *)&enemy_projectile_enable_flag + v0) = v2; + *(uint16 *)((uint8 *)&enemy_projectile_enable_flag + v0) = v2; if (!v2) { - *(uint16 *)((char *)&enemy_projectile_enable_flag + v0) = 8; + *(uint16 *)((uint8 *)&enemy_projectile_enable_flag + v0) = 8; int v3 = v0 >> 1; uint16 v4 = enemy_projectile_id[v3] + 1; if (!sign16(enemy_projectile_id[v3] - 7)) { - *(uint16 *)((char *)&enemy_projectile_enable_flag + v0) = 0; + *(uint16 *)((uint8 *)&enemy_projectile_enable_flag + v0) = 0; v4 = 7; } enemy_projectile_id[v3] = v4; @@ -1687,7 +1687,7 @@ void FileSelectMenu_2_InitMain(void) { // 0x819ED6 void FileSelectMenu_16(void) { // 0x819EF3 for (int i = 2046; i >= 0; i -= 2) - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[768] + (uint16)i) = 15; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[768] + (uint16)i) = 15; nonempty_save_slots = -1; enemy_data[0].palette_index = 0; LoadMenuTilemap(0x56, addr_kMenuTilemap_SamusData); @@ -1790,7 +1790,7 @@ void DrawFileSelectionHealth(uint16 a, uint16 k) { // 0x81A087 --R20_; v4 = 152; } - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[768] + v3) = enemy_data[0].palette_index | v4; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[768] + v3) = enemy_data[0].palette_index | v4; v3 += 2; if (!--R24_) { v3 -= 78; @@ -1800,8 +1800,8 @@ void DrawFileSelectionHealth(uint16 a, uint16 k) { // 0x81A087 R20_ = R18_ / 10; R18_ = R18_ % 10; v5 = R26_; - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[802] + R26_) = enemy_data[0].palette_index | (R18_ + 8288); - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[801] + v5) = enemy_data[0].palette_index | (R20_ + 8288); + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[802] + R26_) = enemy_data[0].palette_index | (R18_ + 8288); + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[801] + v5) = enemy_data[0].palette_index | (R20_ + 8288); } } @@ -1812,16 +1812,16 @@ void DrawFileSelectionTime(uint16 a, uint16 k) { // 0x81A14E int mod_val = game_time_hours % 10; uint16 v2 = R26_; - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[769] + v2) = enemy_data[0].palette_index | (mod_val + 8288); - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[768] + v2) = enemy_data[0].palette_index | (div_val + 8288); + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[769] + v2) = enemy_data[0].palette_index | (mod_val + 8288); + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[768] + v2) = enemy_data[0].palette_index | (div_val + 8288); LoadMenuTilemap(R26_ + 4, addr_word_81B4A8); int div_min = game_time_minutes / 10; int mod_min = game_time_minutes % 10; uint16 v3 = R26_; - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[772] + v3) = enemy_data[0].palette_index | (mod_min + 8288); - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[771] + v3) = enemy_data[0].palette_index | (div_min + 8288); + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[772] + v3) = enemy_data[0].palette_index | (mod_min + 8288); + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[771] + v3) = enemy_data[0].palette_index | (div_min + 8288); } } @@ -1886,7 +1886,7 @@ LABEL_28: if (sign16(selected_save_slot - 3)) { QueueSfx1_Max6(0x2Au); menu_index += 27; - *(uint16 *)((char *)&enemy_projectile_enable_flag + (uint16)(2 * (selected_save_slot + 2))) = 1; + *(uint16 *)((uint8 *)&enemy_projectile_enable_flag + (uint16)(2 * (selected_save_slot + 2))) = 1; *(uint16 *)&g_sram[0x1FEC] = selected_save_slot; *(uint16 *)&g_sram[0x1FEE] = ~selected_save_slot; RtlWriteSram(); @@ -2252,7 +2252,7 @@ uint16 WraparoundFrom6to0(uint16 a) { // 0x81A89F } void SelectFileSelectMapArea(void) { // 0x81A8A9 - char v2; // cf + int8 v2; // cf int16 v3; int16 v4; @@ -2311,7 +2311,7 @@ uint16 CheckIfFileSelectMapAreaCanBeSelected(uint16 a) { // 0x81A931 int v1 = 2 * kFileSelectMap_AreaIndexes[a]; if (*(uint16 *)&used_save_stations_and_elevators[v1]) return true; - uint16 t = *(uint16 *)((char *)&kMapIconDataPointers[4].crateria + v1) + 64; + uint16 t = *(uint16 *)((uint8 *)&kMapIconDataPointers[4].crateria + v1) + 64; return t != 0xffff; } @@ -2336,7 +2336,7 @@ void DrawAreaSelectMapLabels(void) { R3_.addr = (i == file_select_map_area_index) ? 0 : 512; uint16 v1 = 2 * kFileSelectMap_AreaIndexes[i]; uint16 r36 = *(uint16 *)&used_save_stations_and_elevators[v1]; - const uint16 *v2 = (const uint16 *)RomPtr_82(*(VoidP *)((char *)&kMapIconDataPointers[4].crateria + v1)); + const uint16 *v2 = (const uint16 *)RomPtr_82(*(VoidP *)((uint8 *)&kMapIconDataPointers[4].crateria + v1)); int R30 = 16; while (*v2 != 0xffff) { int v4 = r36 & 1; @@ -2401,19 +2401,19 @@ void FileSelectMap_7_PrepExpandSquareTransToRoomMap(void) { // 0x81AAAC expanding_square_right_subpos = 0; expanding_square_top_subpos = 0; expanding_square_bottom_subpos = 0; - expanding_square_left_subvel = *(uint16 *)((char *)&kExpandingSquareVels[0].left_subvel + expanding_square_left_subvel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].left_subvel + (uint16)(16 * area_index)); - expanding_square_left_vel = *(uint16 *)((char *)&kExpandingSquareVels[0].left_vel + (uint16)(16 * area_index)); - expanding_square_right_subvel = *(uint16 *)((char *)&kExpandingSquareVels[0].right_subvel + expanding_square_left_vel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].left_vel + (uint16)(16 * area_index)); + expanding_square_right_subvel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].right_subvel + (uint16)(16 * area_index)); - expanding_square_right_vel = *(uint16 *)((char *)&kExpandingSquareVels[0].right_vel + expanding_square_right_vel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].right_vel + (uint16)(16 * area_index)); - expanding_square_top_subvel = *(uint16 *)((char *)&kExpandingSquareVels[0].top_subvel + expanding_square_top_subvel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].top_subvel + (uint16)(16 * area_index)); - expanding_square_top_vel = *(uint16 *)((char *)&kExpandingSquareVels[0].top_vel + (uint16)(16 * area_index)); - expanding_square_bottom_subvel = *(uint16 *)((char *)&kExpandingSquareVels[0].bottom_subvel + expanding_square_top_vel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].top_vel + (uint16)(16 * area_index)); + expanding_square_bottom_subvel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].bottom_subvel + (uint16)(16 * area_index)); - expanding_square_bottom_vel = *(uint16 *)((char *)&kExpandingSquareVels[0].bottom_vel + expanding_square_bottom_vel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].bottom_vel + (uint16)(16 * area_index)); SetupRoomSelectMapExpandingSquareTransHDMA(); reg_HDMAEN = 12; @@ -2533,7 +2533,7 @@ void FileSelectMap_10_RoomSelectMap(void) { // 0x81AD7F int16 v1; VoidP *v2; int16 v3; - char v4; // cf + int8 v4; // cf int16 v5; int16 v8; @@ -2664,7 +2664,7 @@ void FileSelectMap_14(void) { // 0x81AF83 void FileSelectMap_15_ClearTileMap(void) { // 0x81AF97 reg_TM = 18; for (int i = 2046; i >= 0; i -= 2) - *(uint16 *)((char *)ram3000.pause_menu_map_tilemap + (uint16)i) = 15; + *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + (uint16)i) = 15; uint16 v1 = vram_write_queue_tail; VramWriteEntry *v2 = gVramWriteEntry(vram_write_queue_tail); v2->size = 2048; @@ -2694,19 +2694,19 @@ void FileSelectMap_20_SetupExpandingSquare(void) { // 0x81AFF6 reg_HDMAEN = 0; QueueSfx1_Max6(0x3Cu); expanding_square_timer = kRoomSelectMapExpandingSquareTimers[area_index] - 12; - expanding_square_left_subvel = *(uint16 *)((char *)&kExpandingSquareVels[0].left_subvel + expanding_square_left_subvel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].left_subvel + (uint16)(16 * area_index)); - expanding_square_left_vel = *(uint16 *)((char *)&kExpandingSquareVels[0].left_vel + (uint16)(16 * area_index)); - expanding_square_right_subvel = *(uint16 *)((char *)&kExpandingSquareVels[0].right_subvel + expanding_square_left_vel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].left_vel + (uint16)(16 * area_index)); + expanding_square_right_subvel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].right_subvel + (uint16)(16 * area_index)); - expanding_square_right_vel = *(uint16 *)((char *)&kExpandingSquareVels[0].right_vel + expanding_square_right_vel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].right_vel + (uint16)(16 * area_index)); - expanding_square_top_subvel = *(uint16 *)((char *)&kExpandingSquareVels[0].top_subvel + expanding_square_top_subvel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].top_subvel + (uint16)(16 * area_index)); - expanding_square_top_vel = *(uint16 *)((char *)&kExpandingSquareVels[0].top_vel + (uint16)(16 * area_index)); - expanding_square_bottom_subvel = *(uint16 *)((char *)&kExpandingSquareVels[0].bottom_subvel + expanding_square_top_vel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].top_vel + (uint16)(16 * area_index)); + expanding_square_bottom_subvel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].bottom_subvel + (uint16)(16 * area_index)); - expanding_square_bottom_vel = *(uint16 *)((char *)&kExpandingSquareVels[0].bottom_vel + expanding_square_bottom_vel = *(uint16 *)((uint8 *)&kExpandingSquareVels[0].bottom_vel + (uint16)(16 * area_index)); expanding_square_left_pos = 8; expanding_square_right_pos = 248; @@ -2828,7 +2828,7 @@ void NewSaveFile(void) { // 0x81B2CB void FileSelectClearRestOfMenuTilemapRow(uint16 v0) { // 0x81B3C5 R18_ = 32 - ((uint8)(v0 & 0x3F) >> 1); do { - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[768] + v0) = 15; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[768] + v0) = 15; v0 += 2; --R18_; } while (R18_); @@ -2848,7 +2848,7 @@ void LoadMenuTilemap(uint16 k, uint16 j) { // 0x81B3E2 } if (v2 == -1) break; - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[768] + k) = enemy_data[0].palette_index | v2; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[768] + k) = enemy_data[0].palette_index | v2; k += 2; j += 2; } diff --git a/src/sm_82.c b/src/sm_82.c index a19caab..ecefe80 100644 --- a/src/sm_82.c +++ b/src/sm_82.c @@ -500,9 +500,9 @@ CoroutineRet GameState_43_TransitionFromDemo(void) { // 0x828593 DisablePaletteFx(); ClearPaletteFXObjects(); for (int i = 656; i >= 0; i -= 2) - *(uint16 *)((char *)&enemy_projectile_enable_flag + i) = 0; + *(uint16 *)((uint8 *)&enemy_projectile_enable_flag + i) = 0; for (int j = 538; j >= 0; j -= 2) - *(uint16 *)((char *)&hud_item_tilemap_palette_bits + j) = 0; + *(uint16 *)((uint8 *)&hud_item_tilemap_palette_bits + j) = 0; next_gameplay_CGWSEL = 0; next_gameplay_CGADSUB = 0; reg_TM = 16; @@ -1588,7 +1588,7 @@ void LoadPauseMenuMapTilemap(void) { // 0x82943D if (!sign16(area_index - 7)) v0 = 0; R18_ = v0; - R0_.addr = *(VoidP *)((char *)&kPauseMenuMapTilemaps[0].addr + (uint16)(3 * v0)); + R0_.addr = *(VoidP *)((uint8 *)&kPauseMenuMapTilemaps[0].addr + (uint16)(3 * v0)); *(uint16 *)&R0_.bank = *(uint16 *)(&kPauseMenuMapTilemaps[0].bank + (uint16)(3 * v0)); R3_.addr = ADDR16_OF_RAM(ram4000); *(uint16 *)&R3_.bank = 126; @@ -1664,7 +1664,7 @@ void DrawRoomSelectMap(void) { // 0x829517 if (!sign16(area_index - 7)) v0 = 0; R18_ = v0; - R0_.addr = *(VoidP *)((char *)&kPauseMenuMapTilemaps[0].addr + (uint16)(3 * v0)); + R0_.addr = *(VoidP *)((uint8 *)&kPauseMenuMapTilemaps[0].addr + (uint16)(3 * v0)); *(uint16 *)&R0_.bank = *(uint16 *)(&kPauseMenuMapTilemaps[0].bank + (uint16)(3 * v0)); R3_.addr = ADDR16_OF_RAM(ram3000); R3_.bank = 126; @@ -2909,7 +2909,7 @@ void WriteSamusWireframeTilemap(void) { // 0x82B20C uint16 v3 = v2; R18_ = 8; do { - *(uint16 *)((char *)ram3800.cinematic_bg_tilemap + v2) = IndirReadWord(R0_, v1); + *(uint16 *)((uint8 *)ram3800.cinematic_bg_tilemap + v2) = IndirReadWord(R0_, v1); v2 += 2; v1 += 2; --R18_; @@ -3202,7 +3202,7 @@ void DrawFileSelectMapIcons(void) { // 0x82B6DD R3_.addr = 3584; uint16 a = UpdateSamusPositionIndicatorAnimation(); *(uint16 *)&R0_.bank = 130; - R0_.addr = *(VoidP *)((char *)&kMapIconDataPointers[4].crateria + (uint16)(2 * area_index)); + R0_.addr = *(VoidP *)((uint8 *)&kMapIconDataPointers[4].crateria + (uint16)(2 * area_index)); v0 = 4 * load_station_index; uint16 v1 = IndirReadWord(R0_, 4 * load_station_index) - reg_BG1HOFS; uint16 v2 = IndirReadWord(R0_, v0 + 2) - reg_BG1VOFS; @@ -3261,7 +3261,7 @@ void DrawSimpleMapIcons(uint16 a, uint16 k) { // 0x82B805 } void DrawMapIconsOfType(uint16 a) { // 0x82B81C - char v3; // cf + int8 v3; // cf int16 v4; while (1) { @@ -4272,7 +4272,7 @@ CoroutineRet DoorTransitionFunction_LoadMoreThings_Async(void) { ResetProjectileData(); Samus_LoadSuitTargetPalette(); ClearFxTilemap(); - *(VoidP *)((char *)&door_transition_vram_update_src.addr + 1) = -30208; + *(VoidP *)((uint8 *)&door_transition_vram_update_src.addr + 1) = -30208; if (fx_tilemap_ptr) { door_transition_vram_update_src.addr = fx_tilemap_ptr; door_transition_vram_update_dst = addr_unk_605BE0; @@ -4469,10 +4469,10 @@ void LoadLevelDataAndOtherThings(void) { // 0x82E7D3 RoomDefRoomstate *RoomDefRoomstate; int16 rdf_scroll_ptr; uint16 m; - char v10; - char v11; + int8 v10; + int8 v11; uint16 n; - char v14; + int8 v14; for (int i = 25598; i >= 0; i -= 2) level_data[i >> 1] = 0x8000; @@ -4618,11 +4618,11 @@ uint16 LoadLibraryBackgroundFunc_E_DoorDependentTransferToVram(uint16 j) { // 0 uint16 LoadLibraryBackgroundFunc_2_TransferToVram(uint16 j) { // 0x82E9F9 uint16 *LoadBg_28 = (uint16 *)RomPtr_8F(j); - WriteRegWord(VMADDL, *(uint16 *)((char *)LoadBg_28 + 3)); + WriteRegWord(VMADDL, *(uint16 *)((uint8 *)LoadBg_28 + 3)); WriteRegWord(DMAP1, 0x1801); WriteRegWord(A1T1L, *LoadBg_28); WriteRegWord(A1B1, LoadBg_28[1]); - WriteRegWord(DAS1L, *(uint16 *)((char *)LoadBg_28 + 5)); + WriteRegWord(DAS1L, *(uint16 *)((uint8 *)LoadBg_28 + 5)); WriteReg(VMAIN, 0x80); WriteReg(MDMAEN, 2u); return j + 7; @@ -4662,9 +4662,9 @@ void LoadLevelScrollAndCre(void) { // 0x82EA73 RoomDefRoomstate *RoomDefRoomstate; int16 rdf_scroll_ptr; uint16 m; - char v10; - char v11; - char v12; + int8 v10; + int8 v11; + int8 v12; for (int i = 6398; i >= 0; i -= 2) { @@ -4839,7 +4839,7 @@ void OptionsMenu_AddToVramQueue(void) { // 0x82ECFF void OptionsMenuFunc5(uint16 a, uint16 k, uint16 j) { // 0x82ED28 R18_ = a; do { - *(uint16 *)((char *)ram3000.pause_menu_map_tilemap + k) = R18_ | *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + k) = R18_ | *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + k) & 0xE3FF; k += 2; j -= 2; @@ -5357,12 +5357,12 @@ void OptionsMenuFunc6(void) { int v1 = v0 >> 1; uint16 v2 = g_word_82F639[v1]; const uint16 *v3 = (const uint16 *)RomPtr_82(g_off_82F647[(uint16)(2 * enemy_projectile_F[v1 + 13]) >> 1]); - *(uint16 *)((char *)ram3000.pause_menu_map_tilemap + v2) = *v3; - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[1] + v2) = v3[1]; - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[2] + v2) = v3[2]; - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[32] + v2) = v3[3]; - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[33] + v2) = v3[4]; - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[34] + v2) = v3[5]; + *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + v2) = *v3; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[1] + v2) = v3[1]; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[2] + v2) = v3[2]; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[32] + v2) = v3[3]; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[33] + v2) = v3[4]; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[34] + v2) = v3[5]; v0 = v4 + 2; } while ((int16)(v4 - 12) < 0); if (enemy_projectile_instr_list_ptr[0] != 5 && enemy_projectile_instr_list_ptr[0] != 6) { diff --git a/src/sm_84.c b/src/sm_84.c index 2753088..f5ca8fa 100644 --- a/src/sm_84.c +++ b/src/sm_84.c @@ -678,7 +678,7 @@ const uint8 *PlmInstr_LoadItemPlmGfx(const uint8 *plmp, uint16 k) { // 0x848764 int v7 = R20; int R24 = R20 + 16; do { - *(uint16 *)((char *)&tile_table.tables[0].top_left + v7) = R22 + (plmp[0] << 10); + *(uint16 *)((uint8 *)&tile_table.tables[0].top_left + v7) = R22 + (plmp[0] << 10); ++R22; plmp++; v7 += 2; @@ -1757,25 +1757,25 @@ void PlmSetup_QuicksandSurface_0(uint16 j) { // 0x84B447 samus_y_speed = 0; extra_samus_y_subdisplacement = 0; extra_samus_y_displacement = 0; - *(uint16 *)((char *)&extra_samus_y_subdisplacement + 1) = g_word_84B48F[j >> 1]; + *(uint16 *)((uint8 *)&extra_samus_y_subdisplacement + 1) = g_word_84B48F[j >> 1]; } void PlmSetup_QuicksandSurface_1(uint16 j) { // 0x84B45A int v1 = j >> 1; - if (g_word_84B493[v1] < *(uint16 *)((char *)&samus_y_subspeed + 1)) { + if (g_word_84B493[v1] < *(uint16 *)((uint8 *)&samus_y_subspeed + 1)) { samus_y_subspeed = 0; samus_y_speed = 0; - *(uint16 *)((char *)&samus_y_subspeed + 1) = g_word_84B493[v1]; + *(uint16 *)((uint8 *)&samus_y_subspeed + 1) = g_word_84B493[v1]; } extra_samus_y_subdisplacement = 0; extra_samus_y_displacement = 0; - *(uint16 *)((char *)&extra_samus_y_subdisplacement + 1) = g_word_84B48B[v1]; + *(uint16 *)((uint8 *)&extra_samus_y_subdisplacement + 1) = g_word_84B48B[v1]; } void PlmSetup_QuicksandSurface_2(uint16 j) { // 0x84B47B extra_samus_y_subdisplacement = 0; extra_samus_y_displacement = 0; - *(uint16 *)((char *)&extra_samus_y_subdisplacement + 1) = g_word_84B48B[j >> 1]; + *(uint16 *)((uint8 *)&extra_samus_y_subdisplacement + 1) = g_word_84B48B[j >> 1]; autojump_timer = 0; } diff --git a/src/sm_85.c b/src/sm_85.c index cb6a86d..72746c1 100644 --- a/src/sm_85.c +++ b/src/sm_85.c @@ -88,7 +88,7 @@ void InitializePpuForMessageBoxes(void) { // 0x858143 WriteReg(BG3VOFS, 0); WriteReg(BG3VOFS, 0); for (int i = 128; i >= 0; i -= 2) - *(uint16 *)((char *)ram3000.pause_menu_map_tilemap + (uint16)i) = 0; + *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + (uint16)i) = 0; WriteRegWord(VMADDL, addr_unk_605880); ReadRegWord(RDVRAML); WriteRegWord(DMAP1, 0x3981); @@ -105,7 +105,7 @@ void ClearMessageBoxBg3Tilemap(void) { // 0x8581F3 int16 v0; v0 = 1790; do { - *(uint16 *)((char *)ram3800.cinematic_bg_tilemap + (uint16)v0) = 0xe; + *(uint16 *)((uint8 *)ram3800.cinematic_bg_tilemap + (uint16)v0) = 0xe; v0 -= 2; } while (v0 >= 0); WriteRegWord(VMADDL, addr_unk_605880); @@ -185,8 +185,8 @@ uint16 WriteMessageTilemap(void) { // 0x8582B8 for (int i = 0; i != 112; ++i) ram3000.pause_menu_map_tilemap[i] = 0; bg3_tilemap_offset = 2 * (message_box_index - 1); - R0_.addr = *(VoidP *)((char *)&kMessageBoxDefs[0].message_tilemap + (uint16)(6 * (message_box_index - 1))); - R9_.addr = *(VoidP *)((char *)&kMessageBoxDefs[1].message_tilemap + R0_.addr = *(VoidP *)((uint8 *)&kMessageBoxDefs[0].message_tilemap + (uint16)(6 * (message_box_index - 1))); + R9_.addr = *(VoidP *)((uint8 *)&kMessageBoxDefs[1].message_tilemap + (uint16)(6 * (message_box_index - 1))) - R0_.addr; R22_ = R9_.addr >> 1; @@ -296,7 +296,7 @@ void DrawSpecialButtonAndSetupPpuForLargeMessageBox(uint16 a) { } } } - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[256] + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[256] + kMsgBoxSpecialButtonTilemapOffs[message_box_index - 1]) = kTileNumbersForButtonLetters[v1 >> 1]; bg3_tilemap_offset = 416; SetupPpuForActiveMessageBox(); @@ -410,7 +410,7 @@ void MsgBoxMakeHdmaTable(void) { } while (R20_); uint16 v2 = v1 * 2; do { - *(uint16 *)((char *)ram3000.pause_menu_map_tilemap + v2) = 0; + *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + v2) = 0; v2 += 2; } while ((int16)(v2 - 480) < 0); } diff --git a/src/sm_86.c b/src/sm_86.c index 39ef24c..dea5fc7 100644 --- a/src/sm_86.c +++ b/src/sm_86.c @@ -598,8 +598,8 @@ uint16 EprojInstr_SetTimer(uint16 k, uint16 j) { // 0x8681D5 } uint16 EprojInstr_MoveRandomlyWithinRadius(uint16 k, uint16 j) { // 0x8681DF - char Random; - char v4; + int8 Random; + int8 v4; int16 v6; R18_ = NextRandom(); @@ -1517,10 +1517,10 @@ static const int8 CrocomireSpikeWallPieces_Tab3[36] = { }; void EprojPreInstr_CrocomireSpikeWallPieces(uint16 k) { - char v3; - char v6; - char v7; - char v8; + int8 v3; + int8 v6; + int8 v7; + int8 v8; int v1 = k >> 1; uint16 v2 = enemy_projectile_E[v1]; @@ -1860,7 +1860,7 @@ static const uint8 byte_869979[8] = { 0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe void EprojInit_PhantoonDestroyableFireballs(uint16 j) { // 0x869824 - char v1; + int8 v1; v1 = (uint16)(enemy_projectile_init_param & 0xFF00) >> 8; if (v1) { @@ -2542,7 +2542,7 @@ void EprojInit_BombTorizoExplosiveSwipe(uint16 j) { // 0x86A6F6 } void EprojInit_BombTorizoStatueBreaking(uint16 j) { // 0x86A764 - char v1; + int8 v1; CalculatePlmBlockCoords(plm_id); v1 = enemy_projectile_init_param; @@ -3633,9 +3633,9 @@ void EprojInit_MotherBrainRoomTurretBullets(uint16 j) { // 0x86BF59 void EprojPreInstr_MotherBrainRoomTurrets(uint16 k) { // 0x86BFDF if (Eproj_MotherBrainRoomTurretBullets_CheckIfTurretOnScreen(k) & 1) { if (gRam7800_Default(0)->var_1D) - *(uint16 *)((char *)enemy_projectile_id + k) = 0; + *(uint16 *)((uint8 *)enemy_projectile_id + k) = 0; } else if (gRam7800_Default(0)->var_1D) { - *(uint16 *)((char *)enemy_projectile_id + k) = 0; + *(uint16 *)((uint8 *)enemy_projectile_id + k) = 0; int v5 = k >> 1; R18_ = enemy_projectile_x_pos[v5]; R20_ = enemy_projectile_y_pos[v5]; @@ -3660,7 +3660,7 @@ void EprojPreInstr_MotherBrainRoomTurrets(uint16 k) { // 0x86BFDF } void Eproj_MotherBrainRoomTurretBullets_Func2(uint16 v0) { // 0x86C050 - char v1; + int8 v1; LOBYTE(R20_) = (*((uint8 *)enemy_projectile_y_subpos + v0 + 1) + *((uint8 *)enemy_projectile_y_subpos + v0)) & 7; R18_ = enemy_projectile_1A27[v0 >> 1]; @@ -3843,7 +3843,7 @@ uint16 Math_MultBySinCos(uint16 a) { // 0x86C27A R46 = kSinCosTable8bit_Sext[(a & 0xff) + 64]; R40 = abs16(R46); Math_Mult16U(); - uint16 r = *(uint16 *)((char *)&R42 + 1); + uint16 r = *(uint16 *)((uint8 *)&R42 + 1); return sign16(R46) ? -r : r; } @@ -4610,7 +4610,7 @@ void EprojPreInstr_WreckedShipRobotLaser(uint16 k) { // 0x86D3BF uint16 EprojInstr_AssignNewN00bTubeShardVelocity(uint16 k, uint16 j) { // 0x86D5E1 NextRandom(); int v2 = k >> 1; - enemy_projectile_x_vel[v2] = *(uint16 *)((char *)&random_number + 1); + enemy_projectile_x_vel[v2] = *(uint16 *)((uint8 *)&random_number + 1); enemy_projectile_y_vel[v2] = 192; return j; } @@ -4644,7 +4644,7 @@ uint16 EprojInstr_D62A(uint16 k, uint16 j) { // 0x86D62A uint16 EprojInstr_SetXvelRandom(uint16 k, uint16 j) { // 0x86D69A NextRandom(); - enemy_projectile_x_vel[k >> 1] = *(uint16 *)((char *)&random_number + 1); + enemy_projectile_x_vel[k >> 1] = *(uint16 *)((uint8 *)&random_number + 1); return j; } @@ -5230,7 +5230,7 @@ void EprojInit_EyeDoorSmoke(uint16 j) { // 0x86E4A6 enemy_projectile_instr_list_ptr[v1] = off_86E42C[(uint8)enemy_projectile_init_param]; int v2 = (uint16)(8 * HIBYTE(enemy_projectile_init_param)) >> 1; R18_ = word_86E47E[v2 + 2] + (word_86E47E[v2] & random_number); - R20_ = word_86E47E[v2 + 3] + (word_86E47E[v2 + 1] & *(uint16 *)((char *)&random_number + 1)); + R20_ = word_86E47E[v2 + 3] + (word_86E47E[v2 + 1] & *(uint16 *)((uint8 *)&random_number + 1)); CalculatePlmBlockCoords(plm_id); enemy_projectile_x_pos[v1] = R18_ + 8 * (2 * plm_x_block + 1); enemy_projectile_y_pos[v1] = R20_ + 8 * (2 * plm_y_block + 1); @@ -5721,7 +5721,7 @@ void Eproj_Pickup_SuperMissiles(void) { // 0x86F0F7 static const uint8 byte_86F25E[6] = { 1, 2, 4, 6, 5, 3 }; uint16 RandomDropRoutine(uint16 k) { // 0x86F106 - char v9; // cf + int8 v9; // cf int v1 = k >> 1; varE2A = enemy_projectile_killed_enemy_index[v1] & 0x7FFF; diff --git a/src/sm_88.c b/src/sm_88.c index a8a4bd2..0883d56 100644 --- a/src/sm_88.c +++ b/src/sm_88.c @@ -393,8 +393,8 @@ void InitializeSpecialEffectsForNewRoom(void) { // 0x8882C1 layer2_x_pos = 0; layer2_y_pos = 0; room_loading_irq_handler = 0; - *(VoidP *)((char *)&pause_hook.addr + 1) = -30720; - *(VoidP *)((char *)&unpause_hook.addr + 1) = -30720; + *(VoidP *)((uint8 *)&pause_hook.addr + 1) = -30720; + *(VoidP *)((uint8 *)&unpause_hook.addr + 1) = -30720; pause_hook.addr = FUNC16(PauseHook_Empty); unpause_hook.addr = FUNC16(PauseHook_Empty); WriteReg(WMADDL, 0xF0); @@ -459,7 +459,7 @@ void SpawnHdmaObjectToSlot0xA(uint8 db, const void *p) { // 0x88840A } void HdmaObjectHandler(void) { // 0x8884B9 - char v1; + int8 v1; HandleMusicQueue(); if (!time_is_frozen_flag && (power_bomb_explosion_status & 0x4000) != 0) { @@ -741,7 +741,7 @@ uint8 RaiseOrLowerFx(void) { // 0x88868C R22_ = 0; R24_ = 0; if ((fx_y_vel & 0x8000u) == 0) { - *(uint16 *)((char *)&R22_ + 1) = fx_y_vel; + *(uint16 *)((uint8 *)&R22_ + 1) = fx_y_vel; uint16 v2 = (__PAIR32__(R24_, R22_) + __PAIR32__(fx_base_y_pos, fx_base_y_subpos)) >> 16; fx_base_y_subpos += R22_; if ((v2 & 0x8000u) != 0) @@ -756,7 +756,7 @@ uint8 RaiseOrLowerFx(void) { // 0x88868C } } else { --R24_; - *(uint16 *)((char *)&R22_ + 1) = fx_y_vel; + *(uint16 *)((uint8 *)&R22_ + 1) = fx_y_vel; uint16 v0 = (__PAIR32__(R24_, R22_) + __PAIR32__(fx_base_y_pos, fx_base_y_subpos)) >> 16; fx_base_y_subpos += R22_; if ((v0 & 0x8000u) != 0) @@ -922,7 +922,7 @@ void HdmaobjPreInstr_XrayFunc3_DeactivateBeam(uint16 k) { // 0x888934 VramWriteEntry *v4; mov24(&hdma_ptr_1, 0x980001); - *(uint16 *)((char *)&demo_num_input_frames + 1) = 0; + *(uint16 *)((uint8 *)&demo_num_input_frames + 1) = 0; demo_input_prev = 0; demo_input_prev_new = 0; demo_backup_prev_controller_input = 0; @@ -992,7 +992,7 @@ void HdmaobjPreInstr_XrayFunc5_DeactivateBeam(uint16 k) { // 0x888A08 demo_input = 0; demo_input_new = 0; mov24(&hdma_ptr_1, 0x980001); - *(uint16 *)((char *)&demo_num_input_frames + 1) = 0; + *(uint16 *)((uint8 *)&demo_num_input_frames + 1) = 0; demo_input_prev = 0; demo_input_prev_new = 0; demo_backup_prev_controller_input = 0; @@ -1160,7 +1160,7 @@ void CalculatePowerBombHdmaObjectTablePtrs(uint16 k) { // 0x888C62 static uint16 k_out; uint16 CalculatePowerBombHdmaScaled_LeftOfScreen(uint16 k, uint16 j, uint8 multval) { // 0x888CC6 - char v2; + int8 v2; uint8 v6, v7; do { LOBYTE(R20_) = Mult8x8(multval, g_byte_88A206[(uint8)j + 32]) >> 8; @@ -1189,8 +1189,8 @@ uint16 CalculatePowerBombHdmaScaled_LeftOfScreen(uint16 k, uint16 j, uint8 multv } uint16 CalculatePowerBombHdmaScaled_OnScreen(uint16 k, uint16 j, uint8 multval) { // 0x888D04 - char v2; - char v5; + int8 v2; + int8 v5; uint8 v6, v9; do { LOBYTE(R20_) = Mult8x8(multval, g_byte_88A206[(uint8)j + 32]) >> 8; @@ -1221,10 +1221,10 @@ uint16 CalculatePowerBombHdmaScaled_OnScreen(uint16 k, uint16 j, uint8 multval) } uint16 CalculatePowerBombHdmaScaled_RightOfScreen(uint16 k, uint16 j, uint8 multval) { // 0x888D46 - char v5; - char v6; // ah - char v7; - char v10; // t2 + int8 v5; + int8 v6; // ah + int8 v7; + int8 v10; // t2 uint8 v8, v9; do { LOBYTE(R20_) = Mult8x8(multval, g_byte_88A206[(uint8)j + 32]) >> 8; @@ -1923,7 +1923,7 @@ void FxTypeFunc_24(void) { // 0x88B07C } void HdmaobjPreInstr_FirefleaBG3XScroll(uint16 k) { // 0x88B0BC - char v2; + int8 v2; uint16 v1; fx_layer_blending_config_c = fx_layer_blending_config_c & 0xFF00 | 0xC; @@ -2030,27 +2030,27 @@ void FxTypeFunc_4_Acid(void) { // 0x88B2A1 void FxHandleTide(void) { // 0x88B2C9 uint16 v2, v5; - if (*(int16 *)((char *)&fx_y_vel + 1) < 0) { + if (*(int16 *)((uint8 *)&fx_y_vel + 1) < 0) { fx_y_suboffset = 0; fx_y_offset = 0; int v0 = (uint16)(2 * HIBYTE(tide_phase)) >> 1; uint16 v1 = 8 * kSinCosTable8bit_Sext[v0]; if ((kSinCosTable8bit_Sext[v0] & 0x1000) != 0) --fx_y_offset; - *(uint16 *)((char *)&fx_y_suboffset + 1) = v1; + *(uint16 *)((uint8 *)&fx_y_suboffset + 1) = v1; if ((kSinCosTable8bit_Sext[v0] & 0x8000u) == 0) v2 = tide_phase + 288; else v2 = tide_phase + 192; tide_phase = v2; - } else if ((*(uint16 *)((char *)&fx_y_vel + 1) & 0x4000) != 0) { + } else if ((*(uint16 *)((uint8 *)&fx_y_vel + 1) & 0x4000) != 0) { fx_y_suboffset = 0; fx_y_offset = 0; int v3 = (uint16)(2 * HIBYTE(tide_phase)) >> 1; uint16 v4 = 32 * kSinCosTable8bit_Sext[v3]; if ((kSinCosTable8bit_Sext[v3] & 0x400) != 0) --fx_y_offset; - *(uint16 *)((char *)&fx_y_suboffset + 1) = v4; + *(uint16 *)((uint8 *)&fx_y_suboffset + 1) = v4; if ((kSinCosTable8bit_Sext[v3] & 0x8000u) == 0) v5 = tide_phase + 224; else @@ -2659,7 +2659,7 @@ void sub_88DE18(uint16 k, uint16 a) { // 0x88DE18 } void HdmaobjPreInstr_HazeColorMathSubscreen_FadingIn(uint16 k) { // 0x88DE2D - char v1; + int8 v1; reg_COLDATA[0] = 32; reg_COLDATA[1] = 64; @@ -2692,7 +2692,7 @@ void HdmaobjPreInstr_HazeColorMathSubscreen_FadedIn(uint16 k) { // 0x88DE74 } void HdmaobjPreInstr_HazeColorMathSubscreen_FadingOut(uint16 k) { // 0x88DE96 - char v1; + int8 v1; reg_COLDATA[0] = 32; reg_COLDATA[1] = 64; @@ -2834,12 +2834,12 @@ uint8 VariaSuitPickup_1(void) { // 0x88E0D7 uint8 VariaSuitPickup_2_LightBeamWidens(void) { // 0x88E113 - char v1; + int8 v1; int16 v2; - char v4; - char v6; - char v8; - char v10; + int8 v4; + int8 v6; + int8 v8; + int8 v10; AdvanceSuitPickupColorMathSubscreenToWhite(); bool v0 = (int8)(suit_pickup_light_beam_pos - HIBYTE(suit_pickup_light_beam_widening_speed)) < 0; @@ -2943,7 +2943,7 @@ uint8 GravitySuitPickup_6(void) { // 0x88E25F reg_COLDATA[1] = 64; reg_COLDATA[0] = 32; mov24(&hdma_ptr_1, 0x980001); - *(uint16 *)((char *)&demo_num_input_frames + 1) = 0; + *(uint16 *)((uint8 *)&demo_num_input_frames + 1) = 0; demo_input_prev = 0; demo_input_prev_new = 0; demo_backup_prev_controller_input = 0; @@ -3062,12 +3062,12 @@ uint16 HdmaobjInstr_E4BD(uint16 k, uint16 j) { // 0x88E4BD kraid_unk9000 = 192; g_word_7E9006 = 192; v4 = 12620032; - *(uint16 *)((char *)&g_word_7E9002 + 1) = HIWORD(v4); - *(uint16 *)((char *)&kraid_unk9000 + 1) = v4; + *(uint16 *)((uint8 *)&g_word_7E9002 + 1) = HIWORD(v4); + *(uint16 *)((uint8 *)&kraid_unk9000 + 1) = v4; g_word_7E9004 = -28288; v5 = 12620032; - *(uint16 *)((char *)&g_word_7E9008 + 1) = HIWORD(v5); - *(uint16 *)((char *)&g_word_7E9006 + 1) = v5; + *(uint16 *)((uint8 *)&g_word_7E9008 + 1) = HIWORD(v5); + *(uint16 *)((uint8 *)&g_word_7E9006 + 1) = v5; g_word_7E900A = addr_loc_889180; g_word_7E900C = 0; } else { @@ -3078,17 +3078,17 @@ uint16 HdmaobjInstr_E4BD(uint16 k, uint16 j) { // 0x88E4BD g_word_7E9012 = 160; g_word_7E9015 = 160; v2 = 10522880; - *(uint16 *)((char *)&g_word_7E9002 + 1) = HIWORD(v2); - *(uint16 *)((char *)&kraid_unk9000 + 1) = v2; + *(uint16 *)((uint8 *)&g_word_7E9002 + 1) = HIWORD(v2); + *(uint16 *)((uint8 *)&kraid_unk9000 + 1) = v2; v3 = 10522880; - *(uint16 *)((char *)&g_word_7E9008 + 1) = HIWORD(v3); - *(uint16 *)((char *)&g_word_7E9006 + 1) = v3; - *(uint16 *)((char *)&g_word_7E900C + 1) = -28416; - *(uint16 *)((char *)&g_word_7E9012 + 1) = -28416; + *(uint16 *)((uint8 *)&g_word_7E9008 + 1) = HIWORD(v3); + *(uint16 *)((uint8 *)&g_word_7E9006 + 1) = v3; + *(uint16 *)((uint8 *)&g_word_7E900C + 1) = -28416; + *(uint16 *)((uint8 *)&g_word_7E9012 + 1) = -28416; g_word_7E9004 = -28352; g_word_7E900A = -28352; - *(uint16 *)((char *)&g_word_7E900F + 1) = -28352; - *(uint16 *)((char *)&g_word_7E9015 + 1) = -28352; + *(uint16 *)((uint8 *)&g_word_7E900F + 1) = -28352; + *(uint16 *)((uint8 *)&g_word_7E9015 + 1) = -28352; g_word_7E9018 = 0; } int v6 = k >> 1; @@ -3135,7 +3135,7 @@ void HdmaobjPreInstr_E567(uint16 v0) { // 0x88E567 R18_ = (uint8)((uint16)((R22_ + (mult << 8)) & 0xFF00) >> 8); R20_ = (R28_ + v5) & 0x1FF; v8 = v11; - *(uint16 *)((char *)&g_word_7E9100 + v11) = reg_BG2HOFS - R18_; + *(uint16 *)((uint8 *)&g_word_7E9100 + v11) = reg_BG2HOFS - R18_; } else { R18_ = kSinCosTable8bit_Sext[v6 + 64]; R22_ = Mult8x8(v7, enemy_data[3].ai_var_D) >> 8; @@ -3146,16 +3146,16 @@ void HdmaobjPreInstr_E567(uint16 v0) { // 0x88E567 R18_ = (uint8)((uint16)((R22_ + (mult << 8)) & 0xFF00) >> 8); R20_ = (R28_ + v5) & 0x1FF; v8 = v11; - *(uint16 *)((char *)&g_word_7E9100 + v11) = R18_ + reg_BG2HOFS; + *(uint16 *)((uint8 *)&g_word_7E9100 + v11) = R18_ + reg_BG2HOFS; } v4 = v8 + 2; } while ((int16)(v4 - R30_) < 0); if ((enemy_data[1].parameter_1 & 1) != 0) { for (int i = 126; i >= 0; i -= 2) - *(uint16 *)((char *)&g_word_7E9180 + i) = reg_BG2HOFS + reg_BG2HOFS - *(uint16 *)((char *)&g_word_7E9100 + i); + *(uint16 *)((uint8 *)&g_word_7E9180 + i) = reg_BG2HOFS + reg_BG2HOFS - *(uint16 *)((uint8 *)&g_word_7E9100 + i); } else { for (j = 62; (j & 0x8000u) == 0; j -= 2) - *(uint16 *)((char *)&g_word_7E9140 + j) = reg_BG2HOFS + reg_BG2HOFS - *(uint16 *)((char *)&g_word_7E9100 + j); + *(uint16 *)((uint8 *)&g_word_7E9140 + j) = reg_BG2HOFS + reg_BG2HOFS - *(uint16 *)((uint8 *)&g_word_7E9100 + j); } } else { int v1 = hdma_object_index >> 1; @@ -3234,13 +3234,13 @@ uint16 HdmaobjInstr_InitMorphBallEyeBeamHdma(uint16 k, uint16 j) { // 0x88E917 fx_layer_blending_config_c = 16; kraid_unk9000 = 228; v2 = 14979328; - *(uint16 *)((char *)&g_word_7E9002 + 1) = HIWORD(v2); - *(uint16 *)((char *)&kraid_unk9000 + 1) = v2; + *(uint16 *)((uint8 *)&g_word_7E9002 + 1) = HIWORD(v2); + *(uint16 *)((uint8 *)&kraid_unk9000 + 1) = v2; g_word_7E9004 = -28216; g_word_7E9006 = 152; v3 = 37520; - *(uint16 *)((char *)&g_word_7E9008 + 1) = HIWORD(v3); - *(uint16 *)((char *)&g_word_7E9006 + 1) = v3; + *(uint16 *)((uint8 *)&g_word_7E9008 + 1) = HIWORD(v3); + *(uint16 *)((uint8 *)&g_word_7E9006 + 1) = v3; enemy_data[1].ai_var_C = 1; int v4 = k >> 1; hdma_object_C[v4] = 0; @@ -3319,7 +3319,7 @@ void HdmaobjPreInstr_EACB(uint16 k) { // 0x88EACB hdma_object_D[v1] = 0; hdma_object_C[v1] = 0; for (int i = 510; i >= 0; i -= 2) - *(uint16 *)((char *)&g_word_7E9100 + (uint16)i) = 255; + *(uint16 *)((uint8 *)&g_word_7E9100 + (uint16)i) = 255; kraid_unk9000 = 0; g_word_7E9002 = 0; g_word_7E9004 = 0; @@ -3393,12 +3393,12 @@ void CinematicFunction_Intro_Func133(void) { // 0x88EC3B grapple_beam_tmpD82 = 192; grapple_beam_y_quarter_vel = 192; v0 = 12621824; - *(uint16 *)((char *)&grapple_beam_tmpD84 + 1) = HIWORD(v0); - *(uint16 *)((char *)&grapple_beam_tmpD82 + 1) = v0; + *(uint16 *)((uint8 *)&grapple_beam_tmpD84 + 1) = HIWORD(v0); + *(uint16 *)((uint8 *)&grapple_beam_tmpD82 + 1) = v0; grapple_beam_y_quarter_subvel = -26496; v1 = 12621824; - *(uint16 *)((char *)&grapple_beam_tmpD8A + 1) = HIWORD(v1); - *(uint16 *)((char *)&grapple_beam_y_quarter_vel + 1) = v1; + *(uint16 *)((uint8 *)&grapple_beam_tmpD8A + 1) = HIWORD(v1); + *(uint16 *)((uint8 *)&grapple_beam_y_quarter_vel + 1) = v1; grapple_beam_varD8C = -26496; grapple_beam_varD8E = 0; static const SpawnHdmaObject_Args unk_88EC82 = { 0x42, 0x11, 0xec8a }; diff --git a/src/sm_89.c b/src/sm_89.c index 9a846d7..7a4c7b3 100644 --- a/src/sm_89.c +++ b/src/sm_89.c @@ -68,7 +68,7 @@ void LoadFXHeader(void) { FxDef *v6; FxDef *v8; uint16 j; - char v10; // cf + int8 v10; // cf FxDef *v12; uint16 k; FxDef *FxDef; diff --git a/src/sm_8b.c b/src/sm_8b.c index 049f581..dfc4db1 100644 --- a/src/sm_8b.c +++ b/src/sm_8b.c @@ -583,7 +583,7 @@ void ProcessCinematicBgObject_DrawToTextTilemap(uint16 k, uint16 j) { // 0x8B88 R20_ = v3[3]; while (1) { do { - *(uint16 *)((char *)ram3000.pause_menu_map_tilemap + TilemapOffsetForTile) = *((uint16 *)RomPtr_8C(j) + 2); + *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + TilemapOffsetForTile) = *((uint16 *)RomPtr_8C(j) + 2); j += 2; TilemapOffsetForTile += 2; --R18_; @@ -609,7 +609,7 @@ void ProcessCinematicBgObject_DrawToBgTilemap(uint16 k, uint16 j) { // 0x8B88FD R20_ = v3[3]; while (1) { do { - *(uint16 *)((char *)ram3800.cinematic_bg_tilemap + TilemapOffsetForTile) = *((uint16 *)RomPtr_8C(j) + 2); + *(uint16 *)((uint8 *)ram3800.cinematic_bg_tilemap + TilemapOffsetForTile) = *((uint16 *)RomPtr_8C(j) + 2); j += 2; TilemapOffsetForTile += 2; --R18_; @@ -637,11 +637,11 @@ void ProcessCinematicBgObject_Unk1(uint16 k, uint16 j) { // 0x8B896B uint16 v4 = mode7_vram_write_queue_tail; do { *(uint16 *)(&mode7_write_queue[0].field_0 + v4) = 128; - *(uint16 *)((char *)&mode7_write_queue[0].field_1 + v4) = v3; + *(uint16 *)((uint8 *)&mode7_write_queue[0].field_1 + v4) = v3; *(uint16 *)&mode7_write_queue[0].gap3[v4] = 139; *(uint16 *)&mode7_write_queue[0].gap3[v4 + 1] = R18_; *(uint16 *)&mode7_write_queue[0].gap3[v4 + 3] = R22_; - *(uint16 *)((char *)&mode7_write_queue[1].field_1 + v4) = 0; + *(uint16 *)((uint8 *)&mode7_write_queue[1].field_1 + v4) = 0; v4 += 9; v3 += R18_; R22_ += 128; @@ -659,11 +659,11 @@ void ProcessCinematicBgObject_Unk2(uint16 k, uint16 j) { // 0x8B89CF uint16 v4 = mode7_vram_write_queue_tail; do { *(uint16 *)(&mode7_write_queue[0].field_0 + v4) = 128; - *(uint16 *)((char *)&mode7_write_queue[0].field_1 + v4) = v3; + *(uint16 *)((uint8 *)&mode7_write_queue[0].field_1 + v4) = v3; *(uint16 *)&mode7_write_queue[0].gap3[v4] = 139; *(uint16 *)&mode7_write_queue[0].gap3[v4 + 1] = R20_; *(uint16 *)&mode7_write_queue[0].gap3[v4 + 3] = R22_; - *(uint16 *)((char *)&mode7_write_queue[1].field_1 + v4) = 2; + *(uint16 *)((uint8 *)&mode7_write_queue[1].field_1 + v4) = 2; v4 += 9; v3 += R20_; ++R22_; @@ -1629,7 +1629,7 @@ void ClearCinematicBgObjects(uint16 a) { // 0x8B95CE uint16 j; for (int i = 2046; i >= 0; i -= 2) - *(uint16 *)((char *)ram3000.pause_menu_map_tilemap + (uint16)i) = a; + *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + (uint16)i) = a; for (j = 6; (j & 0x8000u) == 0; j -= 2) { int v3 = j >> 1; cinematicbg_arr1[v3] = 0; @@ -1797,23 +1797,23 @@ void DrawCinematicSpriteObjects_Ending(void) { // 0x8B9799 void SpawnTextGlowObject(uint16 j) { // 0x8B97F7 uint16 v1 = 14; - while (*(uint16 *)((char *)&cinematic_var21 + v1)) { + while (*(uint16 *)((uint8 *)&cinematic_var21 + v1)) { v1 -= 2; if ((v1 & 0x8000u) != 0) return; } - *(uint16 *)((char *)&cinematic_var21 + v1) = j; + *(uint16 *)((uint8 *)&cinematic_var21 + v1) = j; int v2 = v1 >> 1; enemy_projectile_pre_instr[v2 + 2] = 1; enemy_projectile_pre_instr[v2 + 10] = (uint8)R18_; - *(uint16 *)((char *)enemy_projectile_1A27 + v1) = HIBYTE(R18_); - *(uint16 *)((char *)&cinematic_var20 + v1) = 0; + *(uint16 *)((uint8 *)enemy_projectile_1A27 + v1) = HIBYTE(R18_); + *(uint16 *)((uint8 *)&cinematic_var20 + v1) = 0; } void HandleTextGlowObjects(void) { // 0x8B9828 for (int i = 14; i >= 0; i -= 2) { cinematic_var19 = i; - if (*(uint16 *)((char *)&cinematic_var21 + (uint16)i)) { + if (*(uint16 *)((uint8 *)&cinematic_var21 + (uint16)i)) { ProcessTextGlowObject(); i = cinematic_var19; } @@ -1824,8 +1824,8 @@ void ProcessTextGlowObject(void) { // 0x8B9849 uint16 v0 = cinematic_var19; int v1 = cinematic_var19 >> 1; if (enemy_projectile_pre_instr[v1 + 2]-- == 1) { - R28_ = *(uint16 *)((char *)&cinematic_var20 + v0); - uint16 v3 = *(uint16 *)((char *)&cinematic_var21 + v0); + R28_ = *(uint16 *)((uint8 *)&cinematic_var20 + v0); + uint16 v3 = *(uint16 *)((uint8 *)&cinematic_var21 + v0); R20_ = 2 * LOBYTE(enemy_projectile_pre_instr[v1 + 10]); R22_ = R20_ + Mult8x8(*((uint8 *)enemy_projectile_1A27 + v0), 0x40); uint16 v4 = R22_; @@ -1835,7 +1835,7 @@ void ProcessTextGlowObject(void) { // 0x8B9849 R20_ = v5[3]; while (1) { do { - *(uint16 *)((char *)ram3000.pause_menu_map_tilemap + v4) = R28_ | *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + v4) = R28_ | *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + v4) & 0xE3FF; v3 += 2; v4 += 2; @@ -1848,10 +1848,10 @@ void ProcessTextGlowObject(void) { // 0x8B9849 v4 = R22_; } uint16 v6 = cinematic_var19; - if (*(uint16 *)((char *)&cinematic_var20 + cinematic_var19) == 3072) { - *(uint16 *)((char *)&cinematic_var21 + cinematic_var19) = 0; + if (*(uint16 *)((uint8 *)&cinematic_var20 + cinematic_var19) == 3072) { + *(uint16 *)((uint8 *)&cinematic_var21 + cinematic_var19) = 0; } else { - *(uint16 *)((char *)&cinematic_var20 + cinematic_var19) += 1024; + *(uint16 *)((uint8 *)&cinematic_var20 + cinematic_var19) += 1024; enemy_projectile_pre_instr[(v6 >> 1) + 2] = 5; } } @@ -1867,7 +1867,7 @@ void DisableTextGlowObjects_(void) { void CinematicFunction_Intro_Func128(uint16 a) { // 0x8B98F9 for (int i = 2046; i >= 0; i -= 2) - *(uint16 *)((char *)ram3000.pause_menu_map_tilemap + (uint16)i) = a; + *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + (uint16)i) = a; cinematic_var26 = 0; cinematic_var21 = 0; cinematic_var22 = 0; @@ -1943,13 +1943,13 @@ void CreditsObject_ProcessOne(void) { // 0x8B996A } void CreditsObject_Func1(uint16 j) { // 0x8B99C1 - *(VoidP *)((char *)&R0_.addr + 1) = 32512; + *(VoidP *)((uint8 *)&R0_.addr + 1) = 32512; R0_.addr = 0; uint16 RegWord = Mult8x8(cinematic_var26, 0x40); R20_ = 31; uint16 v2 = *((uint16 *)RomPtr_8C(j) + 1); do { - *(uint16 *)((char *)ram3000.pause_menu_map_tilemap + RegWord) = IndirReadWord(R0_, v2); + *(uint16 *)((uint8 *)ram3000.pause_menu_map_tilemap + RegWord) = IndirReadWord(R0_, v2); RegWord += 2; v2 += 2; --R20_; @@ -2482,7 +2482,7 @@ void CinematicFunc_Func10(void) { // 0x8B9F52 DisablePaletteFx(); ClearPaletteFXObjects(); for (int i = 656; i >= 0; i -= 2) - *(uint16 *)((char *)&cinematic_var5 + (uint16)i) = 0; + *(uint16 *)((uint8 *)&cinematic_var5 + (uint16)i) = 0; for (j = 510; (j & 0x8000u) == 0; j -= 2) hdma_table_1[j >> 1] = 0; game_state = 4; @@ -2507,7 +2507,7 @@ void CinematicFunc_Func9(void) { // 0x8B9FAE DisablePaletteFx(); ClearPaletteFXObjects(); for (int i = 656; i >= 0; i -= 2) - *(uint16 *)((char *)&cinematic_var5 + (uint16)i) = 0; + *(uint16 *)((uint8 *)&cinematic_var5 + (uint16)i) = 0; for (j = 510; (j & 0x8000u) == 0; j -= 2) hdma_table_1[j >> 1] = 0; game_state = 40; @@ -2607,7 +2607,7 @@ void CinematicFunction_Intro_Initial(void) { // 0x8BA395 samus_invincibility_timer = 0; samus_knockback_timer = 0; for (int i = 656; i >= 0; i -= 2) - *(uint16 *)((char *)&cinematic_var5 + (uint16)i) = 0; + *(uint16 *)((uint8 *)&cinematic_var5 + (uint16)i) = 0; uint16 v1 = 0; do { palette_buffer[v1 >> 1] = kPalettes_Intro[v1 >> 1]; @@ -2675,7 +2675,7 @@ void CinematicFunction_Intro_Initial(void) { // 0x8BA395 for (j = 1023; (j & 0x8000u) == 0; --j) ram3800.cinematic_bg_tilemap[j] = *(uint16 *)&BTS[j * 2 + 11262]; for (k = 127; (k & 0x8000u) == 0; --k) - ram3000.pause_menu_map_tilemap[k] = *(uint16 *)((char *)g_word_8CD81B + k * 2); + ram3000.pause_menu_map_tilemap[k] = *(uint16 *)((uint8 *)g_word_8CD81B + k * 2); cinematic_var11 = -1; cinematic_function = FUNC16(CinematicFunction_Intro_FadeIn); QueueMusic_Delayed8(0); @@ -3716,7 +3716,7 @@ void CinematicFunction_Intro_Func34(void) { // 0x8BB72F reg_BG3VOFS = 0; cinematic_var5 = 0; for (int i = 656; i >= 0; i -= 2) - *(uint16 *)((char *)&cinematic_var5 + (uint16)i) = 0; + *(uint16 *)((uint8 *)&cinematic_var5 + (uint16)i) = 0; cinematic_function = FUNC16(CinematicFunction_Intro_Func54); RevertButtonConfig(); samus_max_missiles = 0; @@ -4317,7 +4317,7 @@ void CinematicFunction_Intro_Func72(void) { // 0x8BC0C5 reg_BG3VOFS = 0; cinematic_var5 = 0; for (int i = 656; i >= 0; i -= 2) - *(uint16 *)((char *)&cinematic_var5 + (uint16)i) = 0; + *(uint16 *)((uint8 *)&cinematic_var5 + (uint16)i) = 0; cinematic_function = FUNC16(CinematicFunction_Intro_Func73); } } @@ -4336,7 +4336,7 @@ void CinematicFunctionBlackoutFromCeres(void) { // 0x8BC11B SetupPpu_3_Mode7(); for (j = 656; j >= 0; j -= 2) - *(uint16 *)((char *)&cinematic_var5 + (uint16)j) = 0; + *(uint16 *)((uint8 *)&cinematic_var5 + (uint16)j) = 0; door_def_ptr = 0; layer1_x_pos = 0; layer1_y_pos = 0; @@ -4616,7 +4616,7 @@ void CinematicFunction_Intro_Func85(void) { // 0x8BC627 void CinematicFunction_Intro_Func86(void) { // 0x8BC699 SetupPpu_4_Mode1(); for (int i = 656; i >= 0; i -= 2) - *(uint16 *)((char *)&cinematic_var5 + (uint16)i) = 0; + *(uint16 *)((uint8 *)&cinematic_var5 + (uint16)i) = 0; DecompressToMem(0x978ADB, g_ram + 0x19000); DecompressToMem(0x96EC76, g_ram + 0x15000); WriteReg(VMADDL, 0); @@ -4909,7 +4909,7 @@ void CinematicFunction_Intro_Func108(void) { // 0x8BCAD0 void CinematicFunction_Intro_Func95(void) { // 0x8BCADF reg_INIDISP = 0x80; for (int i = 656; i >= 0; i -= 2) - *(uint16 *)((char *)&cinematic_var5 + (uint16)i) = 0; + *(uint16 *)((uint8 *)&cinematic_var5 + (uint16)i) = 0; game_state = kGameState_6_LoadingGameData; samus_health = samus_max_health; } @@ -4941,7 +4941,7 @@ void CinematicFunctionEscapeFromCebes(void) { // 0x8BD480 irqhandler_next_handler = 0; SetupPpu_5_Mode7(); for (j = 656; j >= 0; j -= 2) - *(uint16 *)((char *)&cinematic_var5 + (uint16)j) = 0; + *(uint16 *)((uint8 *)&cinematic_var5 + (uint16)j) = 0; uint16 v2 = 0; do { palette_buffer[v2 >> 1] = kPalettes_Intro3[v2 >> 1]; @@ -4979,7 +4979,7 @@ void CinematicFunctionEscapeFromCebes(void) { // 0x8BD480 DecompressToMem(0x96fe69, g_ram + 0x14000); uint16 v3 = 768; do { - *(uint16 *)((char *)&g_ram[0x14000] + v3) = 0x8c8c; + *(uint16 *)((uint8 *)&g_ram[0x14000] + v3) = 0x8c8c; v3 += 2; } while ((int16)(v3 - 0x4000) < 0); DecompressToMem(0x98b5c1, g_ram + 0x1e000); @@ -5276,19 +5276,19 @@ void CinematicFunction_Intro_Func118(void) { if (sign16(cinematic_var4 - 8)) { *(uint16 *)(&mode7_write_queue[0].field_0 + mode7_vram_write_queue_tail) = 192; int v3 = v0; - *(uint16 *)((char *)&mode7_write_queue[0].field_1 + v2) = kCinematicFunction_Intro_Func118_Tab0[v3]; + *(uint16 *)((uint8 *)&mode7_write_queue[0].field_1 + v2) = kCinematicFunction_Intro_Func118_Tab0[v3]; *(uint16 *)&mode7_write_queue[0].gap3[v1] = 127; *(uint16 *)&mode7_write_queue[0].gap3[v1 + 1] = 2048; *(uint16 *)&mode7_write_queue[0].gap3[v1 + 3] = kCinematicFunction_Intro_Func118_Tab1[v3]; - *(uint16 *)((char *)&mode7_write_queue[1].field_1 + v1) = 128; + *(uint16 *)((uint8 *)&mode7_write_queue[1].field_1 + v1) = 128; } else { *(uint16 *)(&mode7_write_queue[0].field_0 + mode7_vram_write_queue_tail) = 128; int v4 = v0; - *(uint16 *)((char *)&mode7_write_queue[0].field_1 + v2) = kCinematicFunction_Intro_Func118_Tab0[v4]; + *(uint16 *)((uint8 *)&mode7_write_queue[0].field_1 + v2) = kCinematicFunction_Intro_Func118_Tab0[v4]; *(uint16 *)&mode7_write_queue[0].gap3[v1] = 127; *(uint16 *)&mode7_write_queue[0].gap3[v1 + 1] = 2048; *(uint16 *)&mode7_write_queue[0].gap3[v1 + 3] = kCinematicFunction_Intro_Func118_Tab1[v4]; - *(uint16 *)((char *)&mode7_write_queue[1].field_1 + v1) = 0; + *(uint16 *)((uint8 *)&mode7_write_queue[1].field_1 + v1) = 0; } mode7_vram_write_queue_tail = v1 + 9; if (!sign16(++cinematic_var4 - 16)) { @@ -5654,7 +5654,7 @@ void CinematicFunction_Intro_Func136(void) { // 0x8BE265 void CinematicFunction_Intro_Func135(void) { // 0x8BE293 if (sign16(--cinematic_var4 - 65)) { for (int i = 574; i >= 0; i -= 2) - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[288] + (uint16)i) = 127; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[288] + (uint16)i) = 127; uint16 v1 = 0; do { ram3000.pause_menu_map_tilemap[v1 + 384] = g_word_8CDEDB[v1]; @@ -5799,7 +5799,7 @@ void CinematicFunction_Intro_Func141(void) { // 0x8BE48A EnableCinematicBgTilemapUpdates(); cinematicbg_var3 = 19456; for (int i = 126; i >= 0; i -= 2) - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[384] + (uint16)i) = 127; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[384] + (uint16)i) = 127; CinematicUpdateSomeBg(); } } @@ -5909,7 +5909,7 @@ uint16 CinematicFunction_Intro_Func146(uint16 k, uint16 j) { // 0x8BE769 uint16 CinematicFunction_Intro_Func147(uint16 k, uint16 j) { // 0x8BE780 for (int i = 126; i >= 0; i -= 2) - *(uint16 *)((char *)&ram3000.pause_menu_map_tilemap[736] + (uint16)i) = 127; + *(uint16 *)((uint8 *)&ram3000.pause_menu_map_tilemap[736] + (uint16)i) = 127; cinematic_function = FUNC16(CinematicFunction_Intro_Func148); return j; } diff --git a/src/sm_8d.c b/src/sm_8d.c index 1d510dc..a750b02 100644 --- a/src/sm_8d.c +++ b/src/sm_8d.c @@ -348,7 +348,7 @@ PairU16 PalInstr_SetPalfxIndex(uint16 k, uint16 j) { // 0x8DF1C6 } void PalPreInstr_F621(uint16 k) { // 0x8DF621 - if (*(uint16 *)((char *)&flag_for_palette_fx_objects + k)) + if (*(uint16 *)((uint8 *)&flag_for_palette_fx_objects + k)) palettefx_ids[k >> 1] = 0; } diff --git a/src/sm_8f.c b/src/sm_8f.c index e7de84a..32e6551 100644 --- a/src/sm_8f.c +++ b/src/sm_8f.c @@ -515,8 +515,8 @@ void DoorCode_SetupElevatubeFromSouth(void) { // 0x8FE26C void DoorCode_SetupElevatubeFromNorth(void) { // 0x8FE291 *(uint16 *)&room_main_asm_variables[4] = 256; - strcpy((char *)&room_main_asm_variables[2], "@"); - strcpy((char *)&room_main_asm_variables[6], " "); + strcpy((uint8 *)&room_main_asm_variables[2], "@"); + strcpy((uint8 *)&room_main_asm_variables[6], " "); CallSomeSamusCode(0); SpawnHardcodedPlm(&unk_8FE2B1); } @@ -637,8 +637,8 @@ void DoorCode_CeresElevatorShaft(void) { // 0x8FE4E0 reg_M7X = 128; reg_M7Y = 1008; irq_enable_mode7 = 1; - strcpy((char *)room_main_asm_variables, "\""); - strcpy((char *)&room_main_asm_variables[2], "<"); + strcpy((uint8 *)room_main_asm_variables, "\""); + strcpy((uint8 *)&room_main_asm_variables[2], "<"); } void DoorCode_CeresElevatorShaft_2(void) { // 0x8FE513 @@ -659,7 +659,7 @@ static const uint16 kRoomCode_SpawnCeresFallingDebris_Tab[16] = { // 0x8FE525 void RoomCode_SpawnCeresFallingDebris(void) { if (ceres_status && (-- * (uint16 *)room_main_asm_variables, *(int16 *)room_main_asm_variables < 0)) { - strcpy((char *)room_main_asm_variables, "\b"); + strcpy((uint8 *)room_main_asm_variables, "\b"); uint16 v0 = addr_stru_869734; if (random_number & 0x8000) v0 = addr_stru_869742; @@ -684,7 +684,7 @@ LABEL_6: earthquake_type = v0; } } else if (NextRandom() < 0x200u) { - strcpy((char *)room_main_asm_variables, "*"); + strcpy((uint8 *)room_main_asm_variables, "*"); v0 = 23; goto LABEL_6; } @@ -701,7 +701,7 @@ LABEL_6: *(uint16 *)&room_main_asm_variables[2] = v0; } } else if (NextRandom() < 0x180u) { - strcpy((char *)room_main_asm_variables, "*"); + strcpy((uint8 *)room_main_asm_variables, "*"); v0 = 26; goto LABEL_6; } diff --git a/src/sm_90.c b/src/sm_90.c index b0deb82..61928b8 100644 --- a/src/sm_90.c +++ b/src/sm_90.c @@ -2162,12 +2162,12 @@ LABEL_10: if (samus_y_dir != 2) goto LABEL_24; if (liquid_physics_type) { - if ((int16)(*(uint16 *)((char *)&samus_y_subspeed + 1) - kSamusPhys_JumpMinYVelWater) < 0 - || (int16)(*(uint16 *)((char *)&samus_y_subspeed + 1) - kSamusPhys_JumpMaxYVelWater) >= 0) { + if ((int16)(*(uint16 *)((uint8 *)&samus_y_subspeed + 1) - kSamusPhys_JumpMinYVelWater) < 0 + || (int16)(*(uint16 *)((uint8 *)&samus_y_subspeed + 1) - kSamusPhys_JumpMaxYVelWater) >= 0) { goto LABEL_24; } - } else if ((int16)(*(uint16 *)((char *)&samus_y_subspeed + 1) - kSamusPhys_JumpMinYVelAir) < 0 - || (int16)(*(uint16 *)((char *)&samus_y_subspeed + 1) - kSamusPhys_JumpMaxYVelAir) >= 0) { + } else if ((int16)(*(uint16 *)((uint8 *)&samus_y_subspeed + 1) - kSamusPhys_JumpMinYVelAir) < 0 + || (int16)(*(uint16 *)((uint8 *)&samus_y_subspeed + 1) - kSamusPhys_JumpMaxYVelAir) >= 0) { goto LABEL_24; } UNUSED_word_7E0DFA = UNUSED_word_7E0DFA & 0xFF00 | 1; @@ -2516,7 +2516,7 @@ void UpdateMinimap(void) { // 0x90A91B R28_ = kShr0xFc00[v6] & swap16(*(uint16 *)&map_tiles_explored[v3 + 8]); R9_.bank = 130; R9_.addr = kPauseMenuMapData[area_index]; - *(uint16 *)((char *)&R14_ + 1) = R9_.addr; + *(uint16 *)((uint8 *)&R14_ + 1) = R9_.addr; R9_.addr += v3; R38 = swap16(IndirReadWord(R9_, 0)); R9_.addr += 4; @@ -2562,10 +2562,10 @@ void UpdateMinimapInside(void) { // 0x90AA43 else v1 = remaining_enemy_spritemap_entries - 34; uint16 v2 = 2 * v1; - *(uint16 *)&R0_.bank = *(uint16 *)((char *)kPauseMenuMapTilemaps + 2 + (uint16)(3 * area_index)); + *(uint16 *)&R0_.bank = *(uint16 *)((uint8 *)kPauseMenuMapTilemaps + 2 + (uint16)(3 * area_index)); R3_.bank = *(uint16 *)&R0_.bank; R6_.bank = *(uint16 *)&R0_.bank; - R0_.addr = *(uint16 *)((char *)kPauseMenuMapTilemaps + (uint16)(3 * area_index)); + R0_.addr = *(uint16 *)((uint8 *)kPauseMenuMapTilemaps + (uint16)(3 * area_index)); R3_.addr = R0_.addr + 64; R6_.addr = R0_.addr + 128; R18_ = 5; @@ -2618,7 +2618,7 @@ void MarkMapTileAboveSamusAsExplored(void) { // 0x90AB5F void AdjustMapBitsForMapPageSpill(void) { // 0x90AB75 uint16 v0 = (uint8)R48; - R9_.addr = *(uint16 *)((char *)&R14_ + 1) + (uint8)R48; + R9_.addr = *(uint16 *)((uint8 *)&R14_ + 1) + (uint8)R48; LOBYTE(R44) = map_tiles_explored[(uint8)R48]; HIBYTE(R44) = IndirReadByte(R9_, 0); if ((uint8)R34 == 32) { @@ -3261,7 +3261,7 @@ void InitializeProjectileSpeed(uint16 k) { // 0x90B1F3 case 18: { uint16 v3 = R18_; if ((uint8)projectile_init_speed_samus_moved_up) - R18_ = (*(uint16 *)((char *)&projectile_init_speed_samus_moved_right_fract + 1) >> 2) | 0xC000; + R18_ = (*(uint16 *)((uint8 *)&projectile_init_speed_samus_moved_right_fract + 1) >> 2) | 0xC000; else R18_ = 0; int v4 = v3 >> 1; @@ -3272,54 +3272,54 @@ void InitializeProjectileSpeed(uint16 k) { // 0x90B1F3 case 2: { uint16 v5 = R18_; if ((uint8)projectile_init_speed_samus_moved_up) - R18_ = (*(uint16 *)((char *)&projectile_init_speed_samus_moved_right_fract + 1) >> 2) | 0xC000; + R18_ = (*(uint16 *)((uint8 *)&projectile_init_speed_samus_moved_right_fract + 1) >> 2) | 0xC000; else R18_ = 0; int v6 = v5 >> 1; projectile_bomb_y_speed[v6] = R18_ - R22_; - projectile_bomb_x_speed[v6] = *(uint16 *)((char *)&projectile_init_speed_samus_moved_left_fract + 1) + R22_; + projectile_bomb_x_speed[v6] = *(uint16 *)((uint8 *)&projectile_init_speed_samus_moved_left_fract + 1) + R22_; break; } case 4: { int v7 = R18_ >> 1; projectile_bomb_y_speed[v7] = 0; - projectile_bomb_x_speed[v7] = *(uint16 *)((char *)&projectile_init_speed_samus_moved_left_fract + 1) + R22_; + projectile_bomb_x_speed[v7] = *(uint16 *)((uint8 *)&projectile_init_speed_samus_moved_left_fract + 1) + R22_; break; } case 6: { int v8 = R18_ >> 1; - projectile_bomb_y_speed[v8] = *(uint16 *)((char *)&projectile_init_speed_samus_moved_up_fract + 1) + R22_; - projectile_bomb_x_speed[v8] = *(uint16 *)((char *)&projectile_init_speed_samus_moved_left_fract + 1) + R22_; + projectile_bomb_y_speed[v8] = *(uint16 *)((uint8 *)&projectile_init_speed_samus_moved_up_fract + 1) + R22_; + projectile_bomb_x_speed[v8] = *(uint16 *)((uint8 *)&projectile_init_speed_samus_moved_left_fract + 1) + R22_; break; } case 8: case 10: { int v9 = R18_ >> 1; - projectile_bomb_y_speed[v9] = *(uint16 *)((char *)&projectile_init_speed_samus_moved_up_fract + 1) + R22_; + projectile_bomb_y_speed[v9] = *(uint16 *)((uint8 *)&projectile_init_speed_samus_moved_up_fract + 1) + R22_; projectile_bomb_x_speed[v9] = 0; break; } case 12: { int v10 = R18_ >> 1; - projectile_bomb_y_speed[v10] = *(uint16 *)((char *)&projectile_init_speed_samus_moved_up_fract + 1) + R22_; - projectile_bomb_x_speed[v10] = *(uint16 *)((char *)&absolute_moved_last_frame_y_fract + 1) - R22_; + projectile_bomb_y_speed[v10] = *(uint16 *)((uint8 *)&projectile_init_speed_samus_moved_up_fract + 1) + R22_; + projectile_bomb_x_speed[v10] = *(uint16 *)((uint8 *)&absolute_moved_last_frame_y_fract + 1) - R22_; break; } case 14: { int v11 = R18_ >> 1; projectile_bomb_y_speed[v11] = 0; - projectile_bomb_x_speed[v11] = *(uint16 *)((char *)&absolute_moved_last_frame_y_fract + 1) - R22_; + projectile_bomb_x_speed[v11] = *(uint16 *)((uint8 *)&absolute_moved_last_frame_y_fract + 1) - R22_; break; } case 16: { uint16 v12 = R18_; if ((uint8)projectile_init_speed_samus_moved_up) - R18_ = (*(uint16 *)((char *)&projectile_init_speed_samus_moved_right_fract + 1) >> 2) | 0xC000; + R18_ = (*(uint16 *)((uint8 *)&projectile_init_speed_samus_moved_right_fract + 1) >> 2) | 0xC000; else R18_ = 0; int v13 = v12 >> 1; projectile_bomb_y_speed[v13] = R18_ - R22_; - projectile_bomb_x_speed[v13] = *(uint16 *)((char *)&absolute_moved_last_frame_y_fract + 1) - R22_; + projectile_bomb_x_speed[v13] = *(uint16 *)((uint8 *)&absolute_moved_last_frame_y_fract + 1) - R22_; break; } default: @@ -3688,7 +3688,7 @@ static const uint16 kProjectileBombPreInstr[12] = { // 0x90B887 }; void FireUnchargedBeam(void) { - char v3; + int8 v3; if (hyper_beam_flag) { FireHyperBeam(); @@ -3880,15 +3880,15 @@ void HandleChargingBeamGfxAudio(void) { // 0x90BAFC if (hyper_beam_flag) { if (flare_counter) { for (int i = 4; i >= 0; i -= 2) { - bool v7 = *(uint16 *)((char *)&flare_animation_timer + i) == 1; - bool v8 = (-- * (uint16 *)((char *)&flare_animation_timer + i) & 0x8000u) != 0; + bool v7 = *(uint16 *)((uint8 *)&flare_animation_timer + i) == 1; + bool v8 = (-- * (uint16 *)((uint8 *)&flare_animation_timer + i) & 0x8000u) != 0; if (v7 || v8) { - v7 = (*(uint16 *)((char *)&flare_animation_frame + i))-- == 1; + v7 = (*(uint16 *)((uint8 *)&flare_animation_frame + i))-- == 1; if (v7) { if (i == 4) flare_counter = 0; } else { - *(uint16 *)((char *)&flare_animation_timer + i) = 3; + *(uint16 *)((uint8 *)&flare_animation_timer + i) = 3; } } DrawFlareAnimationComponent(i); @@ -3909,24 +3909,24 @@ void HandleChargingBeamGfxAudio(void) { // 0x90BAFC uint16 v0 = 0; do { R0_.bank = -112; - v1 = *(uint16 *)((char *)&flare_animation_timer + v0) - 1; - *(uint16 *)((char *)&flare_animation_timer + v0) = v1; + v1 = *(uint16 *)((uint8 *)&flare_animation_timer + v0) - 1; + *(uint16 *)((uint8 *)&flare_animation_timer + v0) = v1; if (v1 < 0) { - uint16 v2 = *(uint16 *)((char *)&flare_animation_frame + v0) + 1; - *(uint16 *)((char *)&flare_animation_frame + v0) = v2; + uint16 v2 = *(uint16 *)((uint8 *)&flare_animation_frame + v0) + 1; + *(uint16 *)((uint8 *)&flare_animation_frame + v0) = v2; uint16 v3 = v2; R0_.addr = kFlareAnimDelays[v0 >> 1]; v4 = IndirReadByte(R0_, v2); if (v4 == 255) { - *(uint16 *)((char *)&flare_animation_frame + v0) = 0; + *(uint16 *)((uint8 *)&flare_animation_frame + v0) = 0; v3 = 0; } else if (v4 == 254) { R18_ = IndirReadByte(R0_, v3 + 1); - uint16 v5 = *(uint16 *)((char *)&flare_animation_frame + v0) - R18_; - *(uint16 *)((char *)&flare_animation_frame + v0) = v5; + uint16 v5 = *(uint16 *)((uint8 *)&flare_animation_frame + v0) - R18_; + *(uint16 *)((uint8 *)&flare_animation_frame + v0) = v5; v3 = v5; } - *(uint16 *)((char *)&flare_animation_timer + v0) = IndirReadByte(R0_, v3); + *(uint16 *)((uint8 *)&flare_animation_timer + v0) = IndirReadByte(R0_, v3); } v9 = v0; DrawFlareAnimationComponent(v0); @@ -5110,7 +5110,7 @@ void ProjPreInstr_SpeedEcho(uint16 k) { // 0x90D4D2 projectile_bomb_x_speed[v1] += 8; Projectile_SinLookup(projectile_variables[v1], LOBYTE(projectile_bomb_x_speed[v1])); uint16 v2 = R20_ + samus_x_pos; - *(uint16 *)((char *)&speed_echoes_index + k) = R20_ + samus_x_pos; + *(uint16 *)((uint8 *)&speed_echoes_index + k) = R20_ + samus_x_pos; projectile_x_pos[v1] = v2; v3 = v2 - layer1_x_pos; if (v3 < 0 @@ -5122,7 +5122,7 @@ void ProjPreInstr_SpeedEcho(uint16 k) { // 0x90D4D2 v5 < 0) || !sign16(v5 - 256)) { speed_echo_ypos[v1 + 3] = 0; - *(uint16 *)((char *)&speed_echoes_index + k) = 0; + *(uint16 *)((uint8 *)&speed_echoes_index + k) = 0; speed_echo_xpos[v1 + 3] = 0; ClearProjectile(k); } @@ -6716,15 +6716,15 @@ void Samus_HandlePeriodicDamage(void) { // 0x90E9CE if (time_is_frozen_flag) goto LABEL_10; if ((equipped_items & 0x20) != 0) { - uint16 v4 = *(uint16 *)((char *)&samus_periodic_subdamage + 1) >> 2; - LOBYTE(v1) = (uint16)(*(uint16 *)((char *)&samus_periodic_subdamage + 1) >> 2) >> 8; - HIBYTE(v1) = *(uint16 *)((char *)&samus_periodic_subdamage + 1) >> 2; + uint16 v4 = *(uint16 *)((uint8 *)&samus_periodic_subdamage + 1) >> 2; + LOBYTE(v1) = (uint16)(*(uint16 *)((uint8 *)&samus_periodic_subdamage + 1) >> 2) >> 8; + HIBYTE(v1) = *(uint16 *)((uint8 *)&samus_periodic_subdamage + 1) >> 2; samus_periodic_subdamage = v1 & 0xFF00; samus_periodic_damage = HIBYTE(v4); } else if ((equipped_items & 1) != 0) { - uint16 v3 = *(uint16 *)((char *)&samus_periodic_subdamage + 1) >> 1; - LOBYTE(v0) = (uint16)(*(uint16 *)((char *)&samus_periodic_subdamage + 1) >> 1) >> 8; - HIBYTE(v0) = *(uint16 *)((char *)&samus_periodic_subdamage + 1) >> 1; + uint16 v3 = *(uint16 *)((uint8 *)&samus_periodic_subdamage + 1) >> 1; + LOBYTE(v0) = (uint16)(*(uint16 *)((uint8 *)&samus_periodic_subdamage + 1) >> 1) >> 8; + HIBYTE(v0) = *(uint16 *)((uint8 *)&samus_periodic_subdamage + 1) >> 1; samus_periodic_subdamage = v0 & 0xFF00; samus_periodic_damage = HIBYTE(v3); } diff --git a/src/sm_91.c b/src/sm_91.c index cff32f7..1677a3f 100644 --- a/src/sm_91.c +++ b/src/sm_91.c @@ -1164,7 +1164,7 @@ void XrayHdmaFunc_BeamAimedDDR(uint16 j) { // 0x91C2BD goto LABEL_12; } } - IndirWriteWord(R0_, j, *(uint16 *)((char *)&R36 + 1)); + IndirWriteWord(R0_, j, *(uint16 *)((uint8 *)&R36 + 1)); uint16 v2; v2 = j + 2; if ((int16)(v2 - 460) < 0) { @@ -1174,7 +1174,7 @@ void XrayHdmaFunc_BeamAimedDDR(uint16 j) { // 0x91C2BD R36 += R32_; if (v1) break; - IndirWriteWord(R0_, v2, *(uint16 *)((char *)&R36 + 1)); + IndirWriteWord(R0_, v2, *(uint16 *)((uint8 *)&R36 + 1)); v2 += 2; if ((int16)(v2 - 460) >= 0) goto LABEL_12; @@ -1244,7 +1244,7 @@ void XrayHdmaFunc_BeamAimedDD(uint16 j) { // 0x91C381 goto LABEL_15; } } - IndirWriteWord(R0_, j, *(uint16 *)((char *)&R36 + 1)); + IndirWriteWord(R0_, j, *(uint16 *)((uint8 *)&R36 + 1)); uint16 v2 = j + 2; if ((int16)(v2 - 460) < 0) { R18_ = v2 - 4; @@ -1253,7 +1253,7 @@ void XrayHdmaFunc_BeamAimedDD(uint16 j) { // 0x91C381 R36 -= R32_; if (!v1) break; - IndirWriteWord(R0_, v2, *(uint16 *)((char *)&R36 + 1)); + IndirWriteWord(R0_, v2, *(uint16 *)((uint8 *)&R36 + 1)); v2 += 2; if ((int16)(v2 - 460) >= 0) goto LABEL_15; @@ -1321,7 +1321,7 @@ void XrayHdmaFunc_BeamAimedDDL(uint16 j) { // 0x91C446 goto LABEL_12; } } - IndirWriteWord(R0_, j, *(uint16 *)((char *)&R36 + 1)); + IndirWriteWord(R0_, j, *(uint16 *)((uint8 *)&R36 + 1)); uint16 v2; v2 = j + 2; if ((int16)(v2 - 460) < 0) { @@ -1331,7 +1331,7 @@ void XrayHdmaFunc_BeamAimedDDL(uint16 j) { // 0x91C446 R36 -= R32_; if (!v1) break; - IndirWriteWord(R0_, v2, *(uint16 *)((char *)&R36 + 1)); + IndirWriteWord(R0_, v2, *(uint16 *)((uint8 *)&R36 + 1)); v2 += 2; if ((int16)(v2 - 460) >= 0) goto LABEL_12; @@ -1734,7 +1734,7 @@ void XrayHdmaOnScreen_BeamAimedDDR(uint16 j) { // 0x91C87A R36 += R32_; if (v1) break; - IndirWriteWord(R0_, j, *(uint16 *)((char *)&R36 + 1)); + IndirWriteWord(R0_, j, *(uint16 *)((uint8 *)&R36 + 1)); j += 2; if ((int16)(j - 460) >= 0) goto LABEL_7; @@ -1778,7 +1778,7 @@ void XrayHdmaOnScreen_BeamAimedDD(uint16 j) { // 0x91C8E8 R36 -= R32_; if (!v1) break; - IndirWriteWord(R0_, j, *(uint16 *)((char *)&R36 + 1)); + IndirWriteWord(R0_, j, *(uint16 *)((uint8 *)&R36 + 1)); j += 2; if ((int16)(j - 460) >= 0) goto LABEL_6; @@ -1812,7 +1812,7 @@ void XrayHdmaOnScreen_BeamAimedDDL(uint16 j) { // 0x91C939 R36 -= R32_; if (!v1) break; - IndirWriteWord(R0_, j, *(uint16 *)((char *)&R36 + 1)); + IndirWriteWord(R0_, j, *(uint16 *)((uint8 *)&R36 + 1)); j += 2; if ((int16)(j - 460) >= 0) goto LABEL_6; @@ -1886,12 +1886,12 @@ void Xray_SetupStage2_ReadBg1_2ndScreen(void) { // 0x91CB1C uint16 v0 = vram_read_queue_tail; v1 = vram_read_queue_tail; - *(uint16 *)((char *)&vram_read_queue[0].vram_target + vram_read_queue_tail) = ((reg_BG1SC & 0xFC) << 8) + 1024; - *(uint16 *)((char *)&vram_read_queue[0].dma_parameters + v1) = 129; - *(uint16 *)((char *)&vram_read_queue[0].dma_parameters + v0 + 1) = 57; - *(VoidP *)((char *)&vram_read_queue[0].src.addr + v0) = ADDR16_OF_RAM(ram4000) + 0x2800; + *(uint16 *)((uint8 *)&vram_read_queue[0].vram_target + vram_read_queue_tail) = ((reg_BG1SC & 0xFC) << 8) + 1024; + *(uint16 *)((uint8 *)&vram_read_queue[0].dma_parameters + v1) = 129; + *(uint16 *)((uint8 *)&vram_read_queue[0].dma_parameters + v0 + 1) = 57; + *(VoidP *)((uint8 *)&vram_read_queue[0].src.addr + v0) = ADDR16_OF_RAM(ram4000) + 0x2800; *(uint16 *)(&vram_read_queue[0].src.bank + v0) = 126; - *(uint16 *)((char *)&vram_read_queue[0].size + v0) = 2048; + *(uint16 *)((uint8 *)&vram_read_queue[0].size + v0) = 2048; vram_read_queue_tail = v0 + 9; } @@ -1900,12 +1900,12 @@ void Xray_SetupStage3_ReadBg1_1stScreen(void) { // 0x91CB57 uint16 v0 = vram_read_queue_tail; v1 = vram_read_queue_tail; - *(uint16 *)((char *)&vram_read_queue[0].vram_target + vram_read_queue_tail) = (reg_BG1SC & 0xFC) << 8; - *(uint16 *)((char *)&vram_read_queue[0].dma_parameters + v1) = 129; - *(uint16 *)((char *)&vram_read_queue[0].dma_parameters + v0 + 1) = 57; - *(VoidP *)((char *)&vram_read_queue[0].src.addr + v0) = ADDR16_OF_RAM(ram4000) + 0x2000; + *(uint16 *)((uint8 *)&vram_read_queue[0].vram_target + vram_read_queue_tail) = (reg_BG1SC & 0xFC) << 8; + *(uint16 *)((uint8 *)&vram_read_queue[0].dma_parameters + v1) = 129; + *(uint16 *)((uint8 *)&vram_read_queue[0].dma_parameters + v0 + 1) = 57; + *(VoidP *)((uint8 *)&vram_read_queue[0].src.addr + v0) = ADDR16_OF_RAM(ram4000) + 0x2000; *(uint16 *)(&vram_read_queue[0].src.bank + v0) = 126; - *(uint16 *)((char *)&vram_read_queue[0].size + v0) = 2048; + *(uint16 *)((uint8 *)&vram_read_queue[0].size + v0) = 2048; vram_read_queue_tail = v0 + 9; } @@ -1936,10 +1936,10 @@ void Xray_SetupStage4(void) { // 0x91CB8E uint16 v1 = ram4000.xray_tilemaps[v0 + 4129]; uint16 v2 = R22_; v3 = R22_; - *(uint16 *)((char *)&ram4000.xray_tilemaps[33] + R22_) = v1; - *(uint16 *)((char *)&ram4000.xray_tilemaps[32] + v3) = v9; - *(uint16 *)((char *)&ram4000.xray_tilemaps[1] + v2) = v10; - *(uint16 *)((char *)ram4000.xray_tilemaps + v2) = v11; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[33] + R22_) = v1; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[32] + v3) = v9; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[1] + v2) = v10; + *(uint16 *)((uint8 *)ram4000.xray_tilemaps + v2) = v11; R22_ += 4; R30_ += 2; --R18_; @@ -1972,12 +1972,12 @@ void Xray_SetupStage4(void) { // 0x91CB8E LoadXrayBlocks(); uint16 v7 = vram_read_queue_tail; v8 = vram_read_queue_tail; - *(uint16 *)((char *)&vram_read_queue[0].vram_target + vram_read_queue_tail) = (reg_BG2SC & 0xFC) << 8; - *(uint16 *)((char *)&vram_read_queue[0].dma_parameters + v8) = 129; - *(uint16 *)((char *)&vram_read_queue[0].dma_parameters + v7 + 1) = 57; - *(VoidP *)((char *)&vram_read_queue[0].src.addr + v7) = 0x5000; + *(uint16 *)((uint8 *)&vram_read_queue[0].vram_target + vram_read_queue_tail) = (reg_BG2SC & 0xFC) << 8; + *(uint16 *)((uint8 *)&vram_read_queue[0].dma_parameters + v8) = 129; + *(uint16 *)((uint8 *)&vram_read_queue[0].dma_parameters + v7 + 1) = 57; + *(VoidP *)((uint8 *)&vram_read_queue[0].src.addr + v7) = 0x5000; *(uint16 *)(&vram_read_queue[0].src.bank + v7) = 126; - *(uint16 *)((char *)&vram_read_queue[0].size + v7) = 2048; + *(uint16 *)((uint8 *)&vram_read_queue[0].size + v7) = 2048; vram_read_queue_tail = v7 + 9; } @@ -1996,10 +1996,10 @@ void Xray_SetupStage4_Func1(void) { // 0x91CCF1 uint16 v4 = ram4000.xray_tilemaps[v1 + 4128]; uint16 v3 = ram4000.xray_tilemaps[v1 + 4129]; uint16 v2 = R22_ + 1984; - *(uint16 *)((char *)&ram4000.xray_tilemaps[33] + (uint16)(R22_ + 1984)) = v3; - *(uint16 *)((char *)&ram4000.xray_tilemaps[32] + v2) = v4; - *(uint16 *)((char *)&ram4000.xray_tilemaps[1] + v2) = v5; - *(uint16 *)((char *)ram4000.xray_tilemaps + v2) = v6; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[33] + (uint16)(R22_ + 1984)) = v3; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[32] + v2) = v4; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[1] + v2) = v5; + *(uint16 *)((uint8 *)ram4000.xray_tilemaps + v2) = v6; } void Xray_SetupStage4_Func2(void) { // 0x91CD42 @@ -2007,7 +2007,7 @@ void Xray_SetupStage4_Func2(void) { // 0x91CD42 if (R34 == 0) return; PairU16 pay = Xray_HandleXrayedBlock(R34 - 1); - uint16 *dst = (uint16 *)((char *)ram4000.xray_tilemaps + R22_); + uint16 *dst = (uint16 *)((uint8 *)ram4000.xray_tilemaps + R22_); if (pay.k != FUNC16(Xray_Func9)) { if (pay.k != FUNC16(Xray_Func11)) @@ -2235,10 +2235,10 @@ uint16 Xray_Func11(uint16 j) { // 0x91CF6F uint16 bottom_right = tile_table.tables[v5].bottom_right; uint16 v7 = R22_; v8 = R22_; - *(uint16 *)((char *)&ram4000.xray_tilemaps[99] + R22_) = bottom_right; - *(uint16 *)((char *)&ram4000.xray_tilemaps[98] + v8) = bottom_left; - *(uint16 *)((char *)&ram4000.xray_tilemaps[67] + v7) = top_right; - *(uint16 *)((char *)&ram4000.xray_tilemaps[66] + v7) = top_left; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[99] + R22_) = bottom_right; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[98] + v8) = bottom_left; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[67] + v7) = top_right; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[66] + v7) = top_left; } return Xray_Func21(v4); } @@ -2257,10 +2257,10 @@ void Xray_Func13(uint16 a) { // 0x91CFC1 uint16 bottom_left = tile_table.tables[v1].bottom_left; uint16 v2 = R22_; v3 = R22_; - *(uint16 *)((char *)&ram4000.xray_tilemaps[33] + R22_) = tile_table.tables[v1].bottom_right; - *(uint16 *)((char *)&ram4000.xray_tilemaps[32] + v3) = bottom_left; - *(uint16 *)((char *)&ram4000.xray_tilemaps[1] + v2) = top_right; - *(uint16 *)((char *)ram4000.xray_tilemaps + v2) = top_left; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[33] + R22_) = tile_table.tables[v1].bottom_right; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[32] + v3) = bottom_left; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[1] + v2) = top_right; + *(uint16 *)((uint8 *)ram4000.xray_tilemaps + v2) = top_left; } void Xray_Func14(uint16 j) { // 0x91CFEE @@ -2273,10 +2273,10 @@ void Xray_Func14(uint16 j) { // 0x91CFEE uint16 bottom_right = tile_table.tables[v1].bottom_right; uint16 v3 = R22_; v4 = R22_; - *(uint16 *)((char *)&ram4000.xray_tilemaps[35] + R22_) = bottom_right; - *(uint16 *)((char *)&ram4000.xray_tilemaps[34] + v4) = bottom_left; - *(uint16 *)((char *)&ram4000.xray_tilemaps[3] + v3) = top_right; - *(uint16 *)((char *)&ram4000.xray_tilemaps[2] + v3) = top_left; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[35] + R22_) = bottom_right; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[34] + v4) = bottom_left; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[3] + v3) = top_right; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[2] + v3) = top_left; } void Xray_Func15(uint16 j) { // 0x91D01D @@ -2289,10 +2289,10 @@ void Xray_Func15(uint16 j) { // 0x91D01D uint16 bottom_right = tile_table.tables[v1].bottom_right; uint16 v3 = R22_; v4 = R22_; - *(uint16 *)((char *)&ram4000.xray_tilemaps[97] + R22_) = bottom_right; - *(uint16 *)((char *)&ram4000.xray_tilemaps[96] + v4) = bottom_left; - *(uint16 *)((char *)&ram4000.xray_tilemaps[65] + v3) = top_right; - *(uint16 *)((char *)&ram4000.xray_tilemaps[64] + v3) = top_left; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[97] + R22_) = bottom_right; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[96] + v4) = bottom_left; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[65] + v3) = top_right; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[64] + v3) = top_left; } void LoadBlockToXrayTilemap(uint16 a, uint16 k, uint16 j) { // 0x91D04C @@ -2325,10 +2325,10 @@ void Xray_Func16(uint16 a) { // 0x91D0A6 uint16 bottom_left = tile_table.tables[v1].bottom_left; uint16 v2 = R22_; v3 = R22_; - *(uint16 *)((char *)&ram4000.xray_tilemaps[1] + R22_) = tile_table.tables[v1].bottom_right; - *(uint16 *)((char *)ram4000.xray_tilemaps + v3) = bottom_left; - *(uint16 *)((char *)&ram4000.xray_tilemaps[33] + v2) = top_right; - *(uint16 *)((char *)&ram4000.xray_tilemaps[32] + v2) = top_left; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[1] + R22_) = tile_table.tables[v1].bottom_right; + *(uint16 *)((uint8 *)ram4000.xray_tilemaps + v3) = bottom_left; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[33] + v2) = top_right; + *(uint16 *)((uint8 *)&ram4000.xray_tilemaps[32] + v2) = top_left; } void Xray_SetupStage5(void) { // 0x91D0D3 @@ -2345,11 +2345,11 @@ void Xray_SetupStage5(void) { // 0x91D0D3 } uint16 v0 = vram_read_queue_tail; v1 = vram_read_queue_tail; - *(uint16 *)((char *)&vram_read_queue[0].vram_target + vram_read_queue_tail) = ((reg_BG2SC & 0xFC) << 8) + 1024; - *(uint16 *)((char *)&vram_read_queue[0].dma_parameters + v1 + 1) = 57; - *(VoidP *)((char *)&vram_read_queue[0].src.addr + v0) = 0x5800; + *(uint16 *)((uint8 *)&vram_read_queue[0].vram_target + vram_read_queue_tail) = ((reg_BG2SC & 0xFC) << 8) + 1024; + *(uint16 *)((uint8 *)&vram_read_queue[0].dma_parameters + v1 + 1) = 57; + *(VoidP *)((uint8 *)&vram_read_queue[0].src.addr + v0) = 0x5800; *(uint16 *)(&vram_read_queue[0].src.bank + v0) = 126; - *(uint16 *)((char *)&vram_read_queue[0].size + v0) = 2048; + *(uint16 *)((uint8 *)&vram_read_queue[0].size + v0) = 2048; vram_read_queue_tail = v0 + 9; } @@ -2799,8 +2799,8 @@ uint8 Samus_HandleCrystalFlashPals(void) { // 0x91DB93 } bool v1 = (int16)-- * (uint16 *)&suit_pickup_color_math_B < 0; if (!*(uint16 *)&suit_pickup_color_math_B || v1) { - *(uint16 *)&suit_pickup_color_math_B = *(uint16 *)((char *)&stru_91DC00[0].timer + special_samus_palette_timer); - Samus_Copy10PalColors(*(VoidP *)((char *)&stru_91DC00[0].ptr + special_samus_palette_timer)); + *(uint16 *)&suit_pickup_color_math_B = *(uint16 *)((uint8 *)&stru_91DC00[0].timer + special_samus_palette_timer); + Samus_Copy10PalColors(*(VoidP *)((uint8 *)&stru_91DC00[0].ptr + special_samus_palette_timer)); uint16 v2 = special_samus_palette_timer + 4; if (!sign16(special_samus_palette_timer - 36)) v2 = 0; @@ -3097,7 +3097,7 @@ uint8 Xray_Initialize(void) { // 0x91E16D DisableAnimtiles(); DisablePaletteFx(); mov24(&hdma_ptr_1, 0x980001); - *(uint16 *)((char *)&demo_num_input_frames + 1) = 0; + *(uint16 *)((uint8 *)&demo_num_input_frames + 1) = 0; demo_input_prev = -26424; mov24(&hdma_ptr_3, 0x999098); hdma_var_1 = 0; diff --git a/src/sm_94.c b/src/sm_94.c index 1d6407d..b25ea19 100644 --- a/src/sm_94.c +++ b/src/sm_94.c @@ -132,9 +132,9 @@ static const uint16 kBlockColl_Horiz_Slope_NonSquare_Tab[64] = { uint16 PostGrappleColl_Horiz_Slope_NonSquare(uint16 k) { // 0x948000 int16 v1; - char v3; + int8 v3; int16 v5; - char v6; + int8 v6; int16 v8; if (!(samus_collision_direction & 1)) { @@ -180,10 +180,10 @@ uint16 PostGrappleColl_Horiz_Slope_NonSquare(uint16 k) { // 0x948000 uint16 PostGrappleColl_Vert_Slope_NonSquare(uint16 k) { // 0x9480E0 int16 v1; int16 v3; - char v4; + int8 v4; int16 v6; int16 v7; - char v8; + int8 v8; int16 v10; if (!(samus_collision_direction & 1)) { @@ -485,13 +485,13 @@ uint8 BlockColl_Horiz_Slope_NonSquare(void) { // 0x9484D6 uint8 BlockColl_Vert_Slope_NonSquare(uint16 k) { // 0x9486FE int16 v1; int16 v3; - char v4; + int8 v4; uint16 v5; int16 v6; int16 v7; int16 v8; int16 v9; - char v10; + int8 v10; uint16 v11; int16 v12; int16 v13; @@ -1162,7 +1162,7 @@ uint8 Samus_CollDetectChangedPose(void) { // 0x9496AB } uint8 CollDetectDueToPoseChange_SingleBlock(void) { // 0x9496E3 - char v0; // cf + int8 v0; // cf samus_collision_direction |= 0xFu; flag_samus_in_quicksand = 0; @@ -2003,7 +2003,7 @@ uint8 BlockCollNoWaveBeamVert(uint16 k) { // 0x94A2CA uint8 BlockCollWaveBeamHoriz(uint16 k) { // 0x94A352 int16 v2; int16 v8; - char v9; + int8 v9; int16 v10; R30_ = 0; @@ -2050,7 +2050,7 @@ uint8 BlockCollWaveBeamVert(uint16 k) { // 0x94A3E4 int16 v2; int16 v8; int16 v9; - char v10; + int8 v10; int16 v11; R30_ = 0; @@ -2343,7 +2343,7 @@ uint8 BlockReactGrapple_GrappleBlock(void) { // 0x94A7D1 0xd0d8, }; - char v0; + int8 v0; grapple_beam_flags &= ~0x8000u; v0 = BTS[cur_block_index]; @@ -2372,7 +2372,7 @@ uint8 BlockReactGrapple_SpikeBlock(void) { // 0x94A7FD 0xd0e4, 0xd0e4, }; - char v0; + int8 v0; v0 = BTS[cur_block_index]; if (v0 < 0) @@ -2384,11 +2384,11 @@ uint8 BlockReactGrapple_SpikeBlock(void) { // 0x94A7FD uint8 BlockCollGrappleBeam(void) { // 0x94A85B uint8 result; - *(uint16 *)((char *)&grapple_beam_tmpD82 + 1) = grapple_beam_extension_x_velocity; + *(uint16 *)((uint8 *)&grapple_beam_tmpD82 + 1) = grapple_beam_extension_x_velocity; *(uint32 *)&grapple_beam_tmpD82 >>= 2; if ((grapple_beam_extension_x_velocity & 0x8000) != 0) grapple_beam_tmpD84 |= 0xFFC0u; - *(uint16 *)((char *)&grapple_beam_y_quarter_subvel + 1) = grapple_beam_extension_y_velocity; + *(uint16 *)((uint8 *)&grapple_beam_y_quarter_subvel + 1) = grapple_beam_extension_y_velocity; *(uint32 *)&grapple_beam_y_quarter_subvel >>= 2; if ((grapple_beam_extension_y_velocity & 0x8000) != 0) @@ -2754,12 +2754,12 @@ uint8 HandleMovementAndCollForSamusGrapple(void) { // 0x94ACFE uint16 v1 = grapple_beam_unkD2E + grapple_beam_unkD26; if ((int16)(grapple_beam_unkD2E + grapple_beam_unkD26) >= 0) { Multiply16x16(v1, v0); - if (!*(uint16 *)((char *)&mult_product_lo + 1)) + if (!*(uint16 *)((uint8 *)&mult_product_lo + 1)) return 0; - g_word_7E0D9C = *(uint16 *)((char *)&mult_product_lo + 1); + g_word_7E0D9C = *(uint16 *)((uint8 *)&mult_product_lo + 1); grapple_beam_y_quarter_vel = 2 * ((uint16)(*(uint16 *)&grapple_beam_end_subangle - + *(uint16 *)((char *)&mult_product_lo + 1)) >> 8); + + *(uint16 *)((uint8 *)&mult_product_lo + 1)) >> 8); grapple_beam_tmpD84 = grapple_beam_length; uint16 v2; v2 = 2 * grapple_beam_end_angle; @@ -2807,12 +2807,12 @@ LABEL_19: goto LABEL_19; } Multiply16x16(-v1, v0); - if (!*(uint16 *)((char *)&mult_product_lo + 1)) + if (!*(uint16 *)((uint8 *)&mult_product_lo + 1)) return 0; - g_word_7E0D9C = -*(uint16 *)((char *)&mult_product_lo + 1); + g_word_7E0D9C = -*(uint16 *)((uint8 *)&mult_product_lo + 1); grapple_beam_y_quarter_vel = 2 * ((uint16)(*(uint16 *)&grapple_beam_end_subangle - - *(uint16 *)((char *)&mult_product_lo + 1)) >> 8); + - *(uint16 *)((uint8 *)&mult_product_lo + 1)) >> 8); grapple_beam_tmpD84 = grapple_beam_length; uint16 v5; v5 = 2 * grapple_beam_end_angle; @@ -2885,9 +2885,9 @@ void GrappleFunc_AF87(void) { // 0x94AF87 grapple_segment_anim_instr_timers[v1 + 14] = addr_word_94B18F; grapple_segment_anim_instr_timers[v1 + 13] = addr_word_94B18B; grapple_segment_anim_instr_timers[v1] = 1; - *(uint16 *)((char *)&grapple_point_anim_ptr + i) = 1; - *(uint16 *)((char *)&grapple_point_anim_timer + i) = 1; - *(uint16 *)((char *)&grapple_beam_unkD3C + i) = 1; + *(uint16 *)((uint8 *)&grapple_point_anim_ptr + i) = 1; + *(uint16 *)((uint8 *)&grapple_point_anim_timer + i) = 1; + *(uint16 *)((uint8 *)&grapple_beam_unkD3C + i) = 1; } } @@ -2910,13 +2910,13 @@ void HandleGrappleBeamGfx(void) { // 0x94AFBA uint16 v2 = 8 * kSinCosTable8bit_Sext[v1 + 64]; if ((kSinCosTable8bit_Sext[v1 + 64] & 0x1000) != 0) --R28_; - *(uint16 *)((char *)&R26_ + 1) = v2; + *(uint16 *)((uint8 *)&R26_ + 1) = v2; R30_ = 0; R32_ = 0; uint16 v3 = 8 * kSinCosTable8bit_Sext[v1]; if ((kSinCosTable8bit_Sext[v1] & 0x1000) != 0) --R32_; - *(uint16 *)((char *)&R30_ + 1) = v3; + *(uint16 *)((uint8 *)&R30_ + 1) = v3; R38 = (uint16)(*(uint16 *)&grapple_beam_end_subangle & 0x8000) >> 1; R38 |= 2 * ((*(uint16 *)&grapple_beam_end_subangle ^ R38) & 0x4000 ^ 0x4000); R20_ = x_pos_of_start_of_grapple_beam_prevframe - layer1_x_pos - 4; diff --git a/src/sm_a0.c b/src/sm_a0.c index 9db5d8b..01688ec 100644 --- a/src/sm_a0.c +++ b/src/sm_a0.c @@ -162,7 +162,7 @@ const uint16 *EnemyInstr_CopyToVram(uint16 k, const uint16 *jp) { // 0xA0814B v4 = gVramWriteEntry(vram_write_queue_tail); v4->size = GET_WORD(v3); v4->src.addr = GET_WORD(v3 + 2); - *(VoidP *)((char *)&v4->src.addr + 1) = GET_WORD(v3 + 3); + *(VoidP *)((uint8 *)&v4->src.addr + 1) = GET_WORD(v3 + 3); v4->vram_dst = GET_WORD(v3 + 5); vram_write_queue_tail = v2 + 7; return INSTR_INCR_BYTES(jp, 7); @@ -1765,7 +1765,7 @@ const uint16 *CallEnemyInstr(uint32 ea, uint16 k, const uint16 *j) { void EnemyMain(void) { // 0xA08FD4 EnemyDef_A2 *EnemyDef_A2; int16 v6; - char v8; // cf + int8 v8; // cf if (first_free_enemy_index) { if (enemy_index_to_shake != 0xFFFF) { @@ -2188,7 +2188,7 @@ void EprojSamusCollDetect(void) { // 0xA09894 if (!samus_invincibility_timer && !samus_contact_damage_index) { collision_detection_index = 34; do { - if (*(uint16 *)((char *)enemy_projectile_id + collision_detection_index)) { + if (*(uint16 *)((uint8 *)enemy_projectile_id + collision_detection_index)) { int v0 = collision_detection_index >> 1; if ((enemy_projectile_properties[v0] & 0x2000) == 0) { if (LOBYTE(enemy_projectile_radius[v0])) { @@ -2218,7 +2218,7 @@ void EprojSamusCollDetect(void) { // 0xA09894 void HandleEprojCollWithSamus(uint16 k) { // 0xA09923 samus_invincibility_timer = 96; samus_knockback_timer = 5; - uint16 v1 = *((uint16 *)RomPtr_86(*(uint16 *)((char *)enemy_projectile_id + k)) + 5); + uint16 v1 = *((uint16 *)RomPtr_86(*(uint16 *)((uint8 *)enemy_projectile_id + k)) + 5); if (v1) { int v2 = k >> 1; enemy_projectile_instr_list_ptr[v2] = v1; @@ -2226,7 +2226,7 @@ void HandleEprojCollWithSamus(uint16 k) { // 0xA09923 } int v3 = k >> 1; if ((enemy_projectile_properties[v3] & 0x4000) == 0) - *(uint16 *)((char *)enemy_projectile_id + k) = 0; + *(uint16 *)((uint8 *)enemy_projectile_id + k) = 0; uint16 v4 = SuitDamageDivision(enemy_projectile_properties[v3] & 0xFFF); Samus_DealDamage(v4); knockback_x_dir = (int16)(samus_x_pos - enemy_projectile_x_pos[v3]) >= 0; @@ -2240,7 +2240,7 @@ void EprojProjCollDet(void) { // 0xA0996C collision_detection_index = 34; do { uint16 v0 = collision_detection_index; - if (*(uint16 *)((char *)enemy_projectile_id + collision_detection_index) + if (*(uint16 *)((uint8 *)enemy_projectile_id + collision_detection_index) && (enemy_projectile_properties[collision_detection_index >> 1] & 0x8000u) != 0) { uint16 v1 = 0; do { @@ -2286,7 +2286,7 @@ void HandleEprojCollWithProj(uint16 k, uint16 j) { // 0xA099F9 } else { int v3 = k >> 1; enemy_projectile_G[v3] = projectile_type[v2]; - enemy_projectile_instr_list_ptr[v3] = get_EnemyProjectileDef(*(uint16 *)((char *)enemy_projectile_id + k))->shot_instruction_list; + enemy_projectile_instr_list_ptr[v3] = get_EnemyProjectileDef(*(uint16 *)((uint8 *)enemy_projectile_id + k))->shot_instruction_list; enemy_projectile_instr_timers[v3] = 1; enemy_projectile_pre_instr[v3] = FUNC16(EprojPreInstr_nullsub_83); enemy_projectile_properties[v3] &= 0xFFFu; diff --git a/src/sm_a2.c b/src/sm_a2.c index 04af7ef..9479792 100644 --- a/src/sm_a2.c +++ b/src/sm_a2.c @@ -490,8 +490,8 @@ void MaridiaBeybladeTurtle_Func7(uint16 k) { // 0xA28F8D uint16 v3 = 0; if ((int16)(E->base.x_pos - samus_x_pos) < 0) v3 = 4; - E->mte_var_01 = *(uint16 *)((char *)&g_word_A28D56 + v3); - E->mte_var_02 = *(uint16 *)((char *)&g_word_A28D58 + v3); + E->mte_var_01 = *(uint16 *)((uint8 *)&g_word_A28D56 + v3); + E->mte_var_02 = *(uint16 *)((uint8 *)&g_word_A28D58 + v3); E->mte_var_E = 0; E->mte_var_03 = 0; E->mte_var_A = FUNC16(MaridiaBeybladeTurtle_Func8); @@ -911,7 +911,7 @@ void ThinHoppingBlobs_Func3(void) { // 0xA29AAA } uint16 v3 = 8 * thbs_var_00; E->thbs_var_F = v3; - E->thbs_var_E = *(uint16 *)((char *)&g_word_A29A0D + v3); + E->thbs_var_E = *(uint16 *)((uint8 *)&g_word_A29A0D + v3); } void ThinHoppingBlobs_Func4(void) { // 0xA29B06 @@ -926,12 +926,12 @@ void ThinHoppingBlobs_Func5(void) { // 0xA29B1A R22_ = 0; R24_ = 0; do { - R22_ += *(uint16 *)((char *)&g_word_A29A09 + thbs_var_F); - R24_ += *(uint16 *)((char *)kCommonEnemySpeeds_Quadratic + R22_ += *(uint16 *)((uint8 *)&g_word_A29A09 + thbs_var_F); + R24_ += *(uint16 *)((uint8 *)kCommonEnemySpeeds_Quadratic + (uint16)(8 * (uint8)((uint16)(R22_ & 0xFF00) >> 8)) + 1); thbs_var_F = E->thbs_var_F; - v2 = swap16(*(uint16 *)((char *)&g_word_A29A07 + thbs_var_F)); + v2 = swap16(*(uint16 *)((uint8 *)&g_word_A29A07 + thbs_var_F)); } while (!sign16(v2 - R24_)); E->thbs_var_B = R22_; E->thbs_var_03 = 0; @@ -982,7 +982,7 @@ void ThinHoppingBlobs_Func8(void) { // 0xA29B88 if (E->thbs_var_03) { E->thbs_var_D = FUNC16(ThinHoppingBlobs_Func6); } else { - E->thbs_var_04 = *(VoidP *)((char *)&R0_.addr + 1); + E->thbs_var_04 = *(VoidP *)((uint8 *)&R0_.addr + 1); E->thbs_var_05 = E->thbs_var_02 ^ 1; E->thbs_var_00 = 4; E->thbs_var_E = FUNC16(ThinHoppingBlobs_Func15); @@ -992,16 +992,16 @@ void ThinHoppingBlobs_Func8(void) { // 0xA29B88 uint16 thbs_var_F = E->thbs_var_F; if (E->thbs_var_03) { ThinHoppingBlobs_Func10(); - E->thbs_var_B += *(uint16 *)((char *)&g_word_A29A0B + thbs_var_F); + E->thbs_var_B += *(uint16 *)((uint8 *)&g_word_A29A0B + thbs_var_F); } else { ThinHoppingBlobs_Func9(); - E->thbs_var_B -= *(uint16 *)((char *)&g_word_A29A0B + thbs_var_F); + E->thbs_var_B -= *(uint16 *)((uint8 *)&g_word_A29A0B + thbs_var_F); } if (sign16(E->thbs_var_B)) { E->thbs_var_03 = 1; E->thbs_var_B = 0; } - R20_ = (uint8)((uint16)(*(uint16 *)((char *)&g_word_A29A09 + E->thbs_var_F) & 0xFF00) >> 8); + R20_ = (uint8)((uint16)(*(uint16 *)((uint8 *)&g_word_A29A09 + E->thbs_var_F) & 0xFF00) >> 8); R18_ = 0; if (E->thbs_var_02) R20_ = -R20_; @@ -1112,7 +1112,7 @@ void ThinHoppingBlobs_Func14(void) { // 0xA29D6B void ThinHoppingBlobs_Func15(void) { // 0xA29D98 Enemy_ThinHoppingBlobs *E = Get_ThinHoppingBlobs(cur_enemy_index); uint16 thbs_var_F = E->thbs_var_F; - R20_ = (uint8)((uint16)(*(uint16 *)((char *)&g_word_A29A0B + thbs_var_F) & 0xFF00) >> 8); + R20_ = (uint8)((uint16)(*(uint16 *)((uint8 *)&g_word_A29A0B + thbs_var_F) & 0xFF00) >> 8); R18_ = *((uint8 *)&g_word_A29A0B + thbs_var_F) << 8; if (Enemy_MoveDown(cur_enemy_index) & 1) { ThinHoppingBlobs_Func4(); diff --git a/src/sm_a3.c b/src/sm_a3.c index f00a0c2..d42e70a 100644 --- a/src/sm_a3.c +++ b/src/sm_a3.c @@ -125,7 +125,7 @@ void Waver_Main(void) { // 0xA3874C R18_ = E->waver_var_A; R20_ = E->waver_var_B; if (Enemy_MoveRight_IgnoreSlopes(cur_enemy_index) & 1) { - R18_ = *(uint16 *)((char *)&E->waver_var_A + 1); + R18_ = *(uint16 *)((uint8 *)&E->waver_var_A + 1); E->waver_var_B = SignExtend8((uint8)((uint16)(-R18_ & 0xFF00) >> 8)); LOBYTE(v2) = 0; HIBYTE(v2) = -(int8)R18_; @@ -354,7 +354,7 @@ void Fireflea_Main(void) { // 0xA38DEE E->base.x_pos = E->ffa_var_E + CosineMult8bit(HIBYTE(E->ffa_var_D)); draw_enemy_layer = E->ffa_var_C; E->base.y_pos = E->ffa_var_F + SineMult8bitNegative(HIBYTE(E->ffa_var_D)); - E->ffa_var_D += *(uint16 *)((char *)&E->ffa_var_A + 1); + E->ffa_var_D += *(uint16 *)((uint8 *)&E->ffa_var_A + 1); } else { uint16 y_subpos = E->base.y_subpos; int v2 = E->ffa_var_02 >> 1; @@ -903,11 +903,11 @@ void Roach_Func_3(uint16 k) { // 0xA3A1B0 void Roach_Func_4(uint16 k) { // 0xA3A1F3 Enemy_Roach *E = Get_Roach(k); draw_enemy_layer = LOBYTE(E->roach_parameter_1); - CosineMult8bit((uint8)(*(uint16 *)((char *)&E->roach_parameter_1 + 1) - 32)); + CosineMult8bit((uint8)(*(uint16 *)((uint8 *)&E->roach_parameter_1 + 1) - 32)); E->roach_var_05 = loop_index_end; E->roach_var_04 = loop_index; draw_enemy_layer = LOBYTE(E->roach_parameter_1); - SineMult8bitNegative((uint8)(*(uint16 *)((char *)&E->roach_parameter_1 + 1) - 32)); + SineMult8bitNegative((uint8)(*(uint16 *)((uint8 *)&E->roach_parameter_1 + 1) - 32)); E->roach_var_07 = loop_index_end; E->roach_var_06 = loop_index; } @@ -915,28 +915,28 @@ void Roach_Func_4(uint16 k) { // 0xA3A1F3 void Roach_Func_5(uint16 k) { // 0xA3A23E Enemy_Roach *E = Get_Roach(k); draw_enemy_layer = LOBYTE(E->roach_parameter_1); - CosineMult8bit((uint8)(*(uint16 *)((char *)&E->roach_parameter_1 + 1) + 32)); + CosineMult8bit((uint8)(*(uint16 *)((uint8 *)&E->roach_parameter_1 + 1) + 32)); E->roach_var_09 = loop_index_end; E->roach_var_08 = loop_index; draw_enemy_layer = LOBYTE(E->roach_parameter_1); - SineMult8bitNegative((uint8)(*(uint16 *)((char *)&E->roach_parameter_1 + 1) + 32)); + SineMult8bitNegative((uint8)(*(uint16 *)((uint8 *)&E->roach_parameter_1 + 1) + 32)); E->roach_var_0B = loop_index_end; E->roach_var_0A = loop_index; } void Roach_Func_6(uint16 k) { // 0xA3A289 Enemy_Roach *E = Get_Roach(k); - E->roach_var_20 = 2 * ((uint8)(*(uint16 *)((char *)&E->roach_parameter_1 + 1) - 48) >> 5); + E->roach_var_20 = 2 * ((uint8)(*(uint16 *)((uint8 *)&E->roach_parameter_1 + 1) - 48) >> 5); } void Roach_Func_7(uint16 k) { // 0xA3A29E Enemy_Roach *E = Get_Roach(k); - E->roach_var_21 = 2 * ((uint8)(*(uint16 *)((char *)&E->roach_parameter_1 + 1) - 80) >> 5); + E->roach_var_21 = 2 * ((uint8)(*(uint16 *)((uint8 *)&E->roach_parameter_1 + 1) - 80) >> 5); } void Roach_Func_8(uint16 k) { // 0xA3A2B7 Enemy_Roach *E = Get_Roach(k); - E->roach_var_22 = 2 * ((uint8)(*(uint16 *)((char *)&E->roach_parameter_1 + 1) - 48 + 32) >> 5); + E->roach_var_22 = 2 * ((uint8)(*(uint16 *)((uint8 *)&E->roach_parameter_1 + 1) - 48 + 32) >> 5); } void CallRoachFunc(uint32 ea) { switch (ea) { @@ -1423,7 +1423,7 @@ uint16 Sidehopper_Func_2(void) { // 0xA3AB9D R20_ = 0; do { R18_ += R24_; - R20_ += *(uint16 *)((char *)kCommonEnemySpeeds_Quadratic + (uint16)(8 * R18_) + 1); + R20_ += *(uint16 *)((uint8 *)kCommonEnemySpeeds_Quadratic + (uint16)(8 * R18_) + 1); } while (sign16(R20_ - R22_)); return R18_; } @@ -2223,7 +2223,7 @@ const uint16 *MaridiaSnail_Instr_2(uint16 k, const uint16 *jp) { // 0xA3CC3F const uint16 *MaridiaSnail_Instr_4(uint16 k, const uint16 *jp) { // 0xA3CC48 Enemy_MaridiaSnail *E = Get_MaridiaSnail(k); E->msl_var_07 = jp[0]; - E->msl_var_C = *(uint16 *)((char *)&g_stru_A3CD42[0].field_6 + 8 * E->msl_var_07); + E->msl_var_C = *(uint16 *)((uint8 *)&g_stru_A3CD42[0].field_6 + 8 * E->msl_var_07); return jp + 1; } @@ -2682,10 +2682,10 @@ uint8 MaridiaSnail_Func_19(uint16 k) { // 0xA3D356 return 0; uint16 v2 = g_word_A3CDC2[E->msl_var_07]; E->msl_var_07 = v2; - E->base.current_instruction = *(VoidP *)((char *)&g_stru_A3CD42[0].field_0 + (uint16)(8 * v2)); - E->base.properties = *(uint16 *)((char *)&g_stru_A3CD42[0].field_2 + (uint16)(8 * v2)) | E->base.properties & ~3u; - E->msl_var_D = *(VoidP *)((char *)&g_stru_A3CD42[0].field_4 + (uint16)(8 * v2)); - E->msl_var_C = *(uint16 *)((char *)&g_stru_A3CD42[0].field_6 + (uint16)(8 * v2)); + E->base.current_instruction = *(VoidP *)((uint8 *)&g_stru_A3CD42[0].field_0 + (uint16)(8 * v2)); + E->base.properties = *(uint16 *)((uint8 *)&g_stru_A3CD42[0].field_2 + (uint16)(8 * v2)) | E->base.properties & ~3u; + E->msl_var_D = *(VoidP *)((uint8 *)&g_stru_A3CD42[0].field_4 + (uint16)(8 * v2)); + E->msl_var_C = *(uint16 *)((uint8 *)&g_stru_A3CD42[0].field_6 + (uint16)(8 * v2)); MaridiaSnail_Func_2(k, 8 * v2); MaridiaSnail_Func_3(k); E->msl_var_05 = 1; @@ -3541,13 +3541,13 @@ void Metroid_Touch(void) { // 0xA3EDEB if (v2 < 0) v1 = -256; E->metroid_var_B = v1; - *(uint16 *)((char *)&E->metroid_var_A + 1) = v2 << 6; + *(uint16 *)((uint8 *)&E->metroid_var_A + 1) = v2 << 6; v3 = 0; v4 = E->base.y_pos - draw_enemy_layer; if (v4 < 0) v3 = -256; E->metroid_var_D = v3; - *(uint16 *)((char *)&E->metroid_var_C + 1) = v4 << 6; + *(uint16 *)((uint8 *)&E->metroid_var_C + 1) = v4 << 6; E->metroid_var_F = 0; E->base.current_instruction = addr_kMetroid_Ilist_E9CF; E->base.instruction_timer = 1; @@ -3636,13 +3636,13 @@ void Metroid_Shot(void) { // 0xA3EF07 if (v7 < 0) v6 = -256; E->metroid_var_B = v6; - *(uint16 *)((char *)&E->metroid_var_A + 1) = 32 * v7; + *(uint16 *)((uint8 *)&E->metroid_var_A + 1) = 32 * v7; v8 = 0; v9 = E->base.y_pos - projectile_y_pos[0]; if (v9 < 0) v8 = -256; E->metroid_var_D = v8; - *(uint16 *)((char *)&E->metroid_var_C + 1) = 32 * v9; + *(uint16 *)((uint8 *)&E->metroid_var_C + 1) = 32 * v9; E->metroid_var_F = 0; E->base.current_instruction = addr_kMetroid_Ilist_E9CF; E->base.instruction_timer = 1; diff --git a/src/sm_a4.c b/src/sm_a4.c index c57b68e..8af8f41 100644 --- a/src/sm_a4.c +++ b/src/sm_a4.c @@ -647,7 +647,7 @@ void Crocomire_Func_37(void) { // 0xA48D5E Get_Crocomire(0x100u)->crocom_var_01 = 0; Get_Crocomire(0x140u)->crocom_var_01 = 0; QueueSfx2_Max6(0x3Bu); - *(uint16 *)((char *)&g_word_7E9015 + 1) = 0; + *(uint16 *)((uint8 *)&g_word_7E9015 + 1) = 0; SpawnHardcodedPlm(&unk_A48EA3); EK->base.current_instruction = addr_kCrocomire_Ilist_BFB0; EK->base.instruction_timer = 1; @@ -848,10 +848,10 @@ void Crocomire_Func_51(void) { // 0xA49108 } void Crocomire_Func_52(void) { // 0xA49136 - uint16 v0 = *(uint16 *)((char *)&g_word_7E9015 + 1); - if (sign16(*(uint16 *)((char *)&g_word_7E9015 + 1) - 22)) { - uint16 v1 = *(uint16 *)((char *)&g_word_7E9015 + 1); - *(uint16 *)((char *)&g_word_7E9015 + 1) += 2; + uint16 v0 = *(uint16 *)((uint8 *)&g_word_7E9015 + 1); + if (sign16(*(uint16 *)((uint8 *)&g_word_7E9015 + 1) - 22)) { + uint16 v1 = *(uint16 *)((uint8 *)&g_word_7E9015 + 1); + *(uint16 *)((uint8 *)&g_word_7E9015 + 1) += 2; SpawnEnemyProjectileWithGfx(g_word_A49156[v0 >> 1], v1, addr_stru_868F9D); } Crocomire_Func_54(); @@ -881,12 +881,12 @@ void Crocomire_Func_54(void) { // 0xA491BA } void Crocomire_Func_55(void) { // 0xA491C1 - char crocom_var_D; - char v7; - char v9; - char crocom_var_E; - char crocom_var_E_high; - char v12; + int8 crocom_var_D; + int8 v7; + int8 v9; + int8 crocom_var_E; + int8 crocom_var_E_high; + int8 v12; Crocomire_Func_58(); Enemy_Crocomire *E0 = Get_Crocomire(0); @@ -976,7 +976,7 @@ void Crocomire_92CE(void) { // 0xA492CE void Crocomire_92D8(void) { // 0xA492D8 int16 v3; - char v6; + int8 v6; Crocomire_Func_58(); Enemy_Crocomire *EK = Get_Crocomire(cur_enemy_index); @@ -1094,19 +1094,19 @@ void Crocomire_Func_60(void) { // 0xA4943D ++E->crocom_var_A; g_word_7E0692 = 256; croco_cur_vline_idx = 0; - g_word_7E0698 = *(uint16 *)((char *)&g_word_A49BC5 + croco_word_7E069A); + g_word_7E0698 = *(uint16 *)((uint8 *)&g_word_A49BC5 + croco_word_7E069A); g_word_7E0694 = g_word_7E0698; - g_word_7E0696 = *(uint16 *)((char *)&g_word_A49BC7 + croco_word_7E069A); - g_word_7E068E = *(uint16 *)((char *)&g_word_A49BC9 + croco_word_7E069A); + g_word_7E0696 = *(uint16 *)((uint8 *)&g_word_A49BC7 + croco_word_7E069A); + g_word_7E068E = *(uint16 *)((uint8 *)&g_word_A49BC9 + croco_word_7E069A); R0_.addr = 0; - *(uint16 *)&R0_.bank = *(uint16 *)((char *)&g_word_A49BCB + croco_word_7E069A); + *(uint16 *)&R0_.bank = *(uint16 *)((uint8 *)&g_word_A49BCB + croco_word_7E069A); uint16 v6; for (i = croco_word_7E069A + 8; ; i = v6 + 4) { - uint16 v2 = *(uint16 *)((char *)&g_word_A49BC5 + i); + uint16 v2 = *(uint16 *)((uint8 *)&g_word_A49BC5 + i); if (v2 == 0xFFFF) break; v6 = i; - uint16 v3 = *(uint16 *)((char *)&g_word_A49BC7 + i); + uint16 v3 = *(uint16 *)((uint8 *)&g_word_A49BC7 + i); int n = g_word_7E068E; do { *(uint16 *)&g_ram[v3] = IndirReadWord(R0_, v2); @@ -1128,17 +1128,17 @@ void Crocomire_Func_62(void) { // 0xA494B6 uint16 v0 = g_word_7E068A; uint16 v1 = vram_write_queue_tail; - if (*(uint16 *)((char *)&g_word_A49BC5 + g_word_7E068A) == 0xFFFF) { + if (*(uint16 *)((uint8 *)&g_word_A49BC5 + g_word_7E068A) == 0xFFFF) { Enemy_Crocomire *E = Get_Crocomire(cur_enemy_index); ++E->crocom_var_A; ++E->crocom_var_A; g_word_7E068A = 0; } else { v2 = gVramWriteEntry(vram_write_queue_tail); - v2->size = *(uint16 *)((char *)&g_word_A49BC5 + g_word_7E068A); - v2->src.addr = *(uint16 *)((char *)&g_word_A49BCB + v0); - *(uint16 *)&v2->src.bank = *(uint16 *)((char *)&g_word_A49BC9 + v0); - v2->vram_dst = *(uint16 *)((char *)&g_word_A49BC7 + v0); + v2->size = *(uint16 *)((uint8 *)&g_word_A49BC5 + g_word_7E068A); + v2->src.addr = *(uint16 *)((uint8 *)&g_word_A49BCB + v0); + *(uint16 *)&v2->src.bank = *(uint16 *)((uint8 *)&g_word_A49BC9 + v0); + v2->vram_dst = *(uint16 *)((uint8 *)&g_word_A49BC7 + v0); g_word_7E068A = v0 + 8; vram_write_queue_tail = v1 + 7; } @@ -1206,7 +1206,7 @@ void Crocomire_Func_65(void) { // 0xA49580 LABEL_4:; Enemy_Crocomire *EK = Get_Crocomire(cur_enemy_index); EK->crocom_var_A += 2; - for (i = croco_word_7E069A; *(uint16 *)((char *)&g_word_A49BC5 + i) != 0xFFFF; i += 8) + for (i = croco_word_7E069A; *(uint16 *)((uint8 *)&g_word_A49BC5 + i) != 0xFFFF; i += 8) ; croco_word_7E069A = i + 2; hdma_object_channels_bitmask[E0->crocom_var_1F >> 1] = 0; @@ -1302,15 +1302,15 @@ uint16 Crocomire_Func_67(void) { // 0xA496C8 while (1) { v7 = g_word_7E068A + croco_word_7E069A; v8 = vram_write_queue_tail; - if (*(uint16 *)((char *)&g_word_A49BC5 + v7) != 0xFFFF) + if (*(uint16 *)((uint8 *)&g_word_A49BC5 + v7) != 0xFFFF) break; g_word_7E068A = 0; } v9 = gVramWriteEntry(vram_write_queue_tail); - v9->size = *(uint16 *)((char *)&g_word_A49BC5 + v7); - v9->src.addr = *(uint16 *)((char *)&g_word_A49BCB + v7); - *(uint16 *)&v9->src.bank = *(uint16 *)((char *)&g_word_A49BC9 + v7); - v9->vram_dst = *(uint16 *)((char *)&g_word_A49BC7 + v7); + v9->size = *(uint16 *)((uint8 *)&g_word_A49BC5 + v7); + v9->src.addr = *(uint16 *)((uint8 *)&g_word_A49BCB + v7); + *(uint16 *)&v9->src.bank = *(uint16 *)((uint8 *)&g_word_A49BC9 + v7); + v9->vram_dst = *(uint16 *)((uint8 *)&g_word_A49BC7 + v7); vram_write_queue_tail = v8 + 7; g_word_7E068A += 8; return 1; diff --git a/src/sm_a5.c b/src/sm_a5.c index 66c793b..fc005db 100644 --- a/src/sm_a5.c +++ b/src/sm_a5.c @@ -174,7 +174,7 @@ void Draygon_Func_2(void) { // 0xA5878B } void Draygon_Func_3(void) { // 0xA587AA - char Random; + int8 Random; if ((nmi_frame_counter_word & 0x3F) == 0) { Random = NextRandom(); @@ -213,7 +213,7 @@ void Draygon_Func_5(void) { // 0xA58817 if ((int16)(v1 - E->draygon_var_01) < 0) break; varE24 -= HIBYTE(draw_oam_x_offset); - *(uint16 *)((char *)&g_word_7E9002 + varE26++) = v1; + *(uint16 *)((uint8 *)&g_word_7E9002 + varE26++) = v1; ++varE26; ++varE26; if (!sign16(++varE26 - 2048)) { @@ -237,7 +237,7 @@ void Draygon_Func_5(void) { // 0xA58817 E->draygon_var_D = R44; E->draygon_var_E = R42; uint16 v6 = varE26; - *(uint16 *)((char *)&g_word_7E9002 + varE26) = E->base.y_pos; + *(uint16 *)((uint8 *)&g_word_7E9002 + varE26) = E->base.y_pos; E->draygon_var_B = v6; E->draygon_var_C = v6; } @@ -252,7 +252,7 @@ void Draygon_Func_6(void) { // 0xA588B1 E3->base.current_instruction = addr_kDraygon_Ilist_9C06; E3->base.instruction_timer = 1; } - Get_Draygon(cur_enemy_index)->base.y_pos = *(uint16 *)((char *)&g_word_7E9002 + draygon_var_B); + Get_Draygon(cur_enemy_index)->base.y_pos = *(uint16 *)((uint8 *)&g_word_7E9002 + draygon_var_B); E->draygon_var_B -= 4; if (E->draygon_var_B) { uint16 x_subpos = E->base.x_subpos; @@ -296,7 +296,7 @@ void Draygon_Func_9(void) { // 0xA58951 E3->base.current_instruction = addr_kDraygon_Ilist_9BDA; E3->base.instruction_timer = 1; } - Get_Draygon(cur_enemy_index)->base.y_pos = *(uint16 *)((char *)&g_word_7E9002 + draygon_var_B); + Get_Draygon(cur_enemy_index)->base.y_pos = *(uint16 *)((uint8 *)&g_word_7E9002 + draygon_var_B); E->draygon_var_B += 4; if (E->draygon_var_B == E->draygon_var_C) { E->draygon_var_B = 0; @@ -339,7 +339,7 @@ void Draygon_Func_11(void) { // 0xA58A00 E3->base.current_instruction = addr_kDraygon_Ilist_9813; E3->base.instruction_timer = 1; } - Get_Draygon(cur_enemy_index)->base.y_pos = *(uint16 *)((char *)&g_word_7E9002 + draygon_var_B); + Get_Draygon(cur_enemy_index)->base.y_pos = *(uint16 *)((uint8 *)&g_word_7E9002 + draygon_var_B); E->draygon_var_B -= 4; if (E->draygon_var_B) { uint16 x_subpos = E->base.x_subpos; @@ -382,7 +382,7 @@ void Draygon_Func_13(void) { // 0xA58A90 E3->base.current_instruction = addr_kDraygon_Ilist_97E7; E3->base.instruction_timer = 1; } - Get_Draygon(cur_enemy_index)->base.y_pos = *(uint16 *)((char *)&g_word_7E9002 + draygon_var_B); + Get_Draygon(cur_enemy_index)->base.y_pos = *(uint16 *)((uint8 *)&g_word_7E9002 + draygon_var_B); ++E->draygon_var_B; ++E->draygon_var_B; ++E->draygon_var_B; @@ -1818,7 +1818,7 @@ void SporeSpawn_Func_6(void) { // 0xA5EDF3 E->base.ai_handler_bits = 0; E->base.properties |= kEnemyProps_Tangible; for (int i = 26; i >= 0; i -= 2) - *(uint16 *)((char *)enemy_projectile_id + (uint16)i) = 0; + *(uint16 *)((uint8 *)enemy_projectile_id + (uint16)i) = 0; E0->base.current_instruction = addr_kDraygon_Ilist_E77D; E0->base.instruction_timer = 1; *(uint16 *)&boss_bits_for_area[area_index] |= 2u; diff --git a/src/sm_a6.c b/src/sm_a6.c index 39945f1..63d9821 100644 --- a/src/sm_a6.c +++ b/src/sm_a6.c @@ -1806,25 +1806,25 @@ void CeresRidley_Func_29(void) { // 0xA6AB5F R38 = abs16(R24_); R40 = E->cry_var_30; CeresRidley_Func_32(); - reg_M7A = MaybeNegate(R24_, *(uint16 *)((char *)&R42 + 1)); + reg_M7A = MaybeNegate(R24_, *(uint16 *)((uint8 *)&R42 + 1)); R24_ = CeresRidley_Func_30(0x100u); R38 = abs16(R24_); R40 = E->cry_var_30; CeresRidley_Func_32(); - reg_M7B = MaybeNegate(R24_, *(uint16 *)((char *)&R42 + 1)); + reg_M7B = MaybeNegate(R24_, *(uint16 *)((uint8 *)&R42 + 1)); R24_ = -CeresRidley_Func_30(0x100u); R38 = abs16(R24_); R40 = E->cry_var_30; CeresRidley_Func_32(); - reg_M7C = MaybeNegate(R24_, *(uint16 *)((char *)&R42 + 1)); + reg_M7C = MaybeNegate(R24_, *(uint16 *)((uint8 *)&R42 + 1)); R24_ = CeresRidley_Func_31(0x100u); R38 = abs16(R24_); R40 = E->cry_var_30; CeresRidley_Func_32(); - reg_M7D = MaybeNegate(R24_, *(uint16 *)((char *)&R42 + 1)); + reg_M7D = MaybeNegate(R24_, *(uint16 *)((uint8 *)&R42 + 1)); } uint16 CeresRidley_Func_30(uint16 a) { // 0xA6AC0E @@ -1847,9 +1847,9 @@ uint16 CeresRidley_AC30(uint16 a) { // 0xA6AC30 R40 = abs16(result); CeresRidley_Func_32(); if (((R22_ ^ R20_) & 0x8000u) != 0) - return -*(uint16 *)((char *)&R42 + 1); + return -*(uint16 *)((uint8 *)&R42 + 1); else - return *(uint16 *)((char *)&R42 + 1); + return *(uint16 *)((uint8 *)&R42 + 1); } return result; } @@ -2922,7 +2922,7 @@ void Ridley_Func_59(void) { // 0xA6C136 const uint8 *v1 = RomPtr_A6(addr_byte_A6C15D); v2 = gVramWriteEntry(vram_write_queue_tail); v2->size = GET_WORD(v1); - *(VoidP *)((char *)&v2->src.addr + 1) = GET_WORD(v1 + 3); + *(VoidP *)((uint8 *)&v2->src.addr + 1) = GET_WORD(v1 + 3); v2->src.addr = GET_WORD(v1 + 2); v2->vram_dst = GET_WORD(v1 + 5); vram_write_queue_tail = v0 + 7; @@ -2977,7 +2977,7 @@ uint8 ProcessEscapeTimerTileTransfers(void) { // 0xA6C26E if (GET_WORD(v3)) { v4 = gVramWriteEntry(vram_write_queue_tail); v4->size = GET_WORD(v3); - *(VoidP *)((char *)&v4->src.addr + 1) = GET_WORD(v3 + 3); + *(VoidP *)((uint8 *)&v4->src.addr + 1) = GET_WORD(v3 + 3); v4->src.addr = GET_WORD(v3 + 2); v4->vram_dst = GET_WORD(v3 + 5); vram_write_queue_tail = v2 + 7; @@ -3035,7 +3035,7 @@ uint8 HandleTypewriterText(void) { // 0xA6C2B1 uint16 v11 = vram_write_queue_tail; v12 = gVramWriteEntry(vram_write_queue_tail); v12->size = 2; - *(VoidP *)((char *)&v12->src.addr + 1) = 32256; + *(VoidP *)((uint8 *)&v12->src.addr + 1) = 32256; E->mbn_var_3A = R18_ + v4 - 65; v12->src.addr = ADDR16_OF_RAM(*extra_enemy_ram8000) + 52; uint16 mbn_var_3C = E->mbn_var_3C; @@ -3067,7 +3067,7 @@ void Ridley_Func_62(void) { // 0xA6C383 break; v3 = gVramWriteEntry(i); v3->size = GET_WORD(v2); - *(VoidP *)((char *)&v3->src.addr + 1) = GET_WORD(v2 + 3); + *(VoidP *)((uint8 *)&v3->src.addr + 1) = GET_WORD(v2 + 3); v3->src.addr = GET_WORD(v2 + 2); v3->vram_dst = GET_WORD(v2 + 5); v0 += 7; @@ -3755,8 +3755,8 @@ LABEL_25: void Ridley_Func_89(uint16 a) { // 0xA6D19D uint16 v1; - char v2; // t0 - char v4; // cf + int8 v2; // t0 + int8 v4; // cf v2 = a; LOBYTE(v1) = 0; @@ -4331,12 +4331,12 @@ void Ridley_Func_114(void) { // 0xA6D955 Enemy_Ridley *E = Get_Ridley(0); uint16 ridley_var_10 = E->ridley_var_10, v2; if (!ridley_var_10) { - if (*(int16 *)((char *)&E->base.enemy_ptr + 1) < 0) + if (*(int16 *)((uint8 *)&E->base.enemy_ptr + 1) < 0) return; v2 = addr_kRidley_Ilist_E6F0; goto LABEL_7; } - if (ridley_var_10 != 1 && *(int16 *)((char *)&E->base.enemy_ptr + 1) < 0) { + if (ridley_var_10 != 1 && *(int16 *)((uint8 *)&E->base.enemy_ptr + 1) < 0) { v2 = addr_kRidley_Ilist_E706; LABEL_7: E->base.current_instruction = v2; @@ -4406,8 +4406,8 @@ void Ridley_Func_118(void) { // 0xA6DA0C E->ridley_var_06 = i; uint16 v6 = vram_write_queue_tail; v7 = gVramWriteEntry(vram_write_queue_tail); - *(VoidP *)((char *)&v7->src.addr + 1) = -20480; - *(VoidP *)((char *)&v7[1].src.addr + 1) = -20480; + *(VoidP *)((uint8 *)&v7->src.addr + 1) = -20480; + *(VoidP *)((uint8 *)&v7[1].src.addr + 1) = -20480; v7->src.addr = v4[1]; v7[1].src.addr = v4[2]; v7->vram_dst = 29216; @@ -4428,8 +4428,8 @@ void Ridley_Func_119(uint8 carry) { // 0xA6DA8B v1 = addr_off_A6DAD4; uint16 v2 = vram_write_queue_tail; v3 = gVramWriteEntry(vram_write_queue_tail); - *(VoidP *)((char *)&v3->src.addr + 1) = -20480; - *(VoidP *)((char *)&v3[1].src.addr + 1) = -20480; + *(VoidP *)((uint8 *)&v3->src.addr + 1) = -20480; + *(VoidP *)((uint8 *)&v3[1].src.addr + 1) = -20480; const uint8 *v4 = RomPtr_A6(v1); v3->src.addr = GET_WORD(v4); v3[1].src.addr = GET_WORD(v4 + 2); @@ -5064,7 +5064,7 @@ void CeresDoor_Func_1(uint16 k) { // 0xA6F739 uint16 v1 = vram_write_queue_tail; v2 = gVramWriteEntry(vram_write_queue_tail); v2->size = 1024; - *(VoidP *)((char *)&v2->src.addr + 1) = -20480; + *(VoidP *)((uint8 *)&v2->src.addr + 1) = -20480; v2->src.addr = -15360; v2->vram_dst = 28672; vram_write_queue_tail = v1 + 7; diff --git a/src/sm_a7.c b/src/sm_a7.c index a82339f..6520b42 100644 --- a/src/sm_a7.c +++ b/src/sm_a7.c @@ -1583,7 +1583,7 @@ void Kraid_HandleFirstPhase(void) { // 0xA7C005 } } E0->kraid_var_B = v3 - 26918; - E0->kraid_var_C = *(uint16 *)((char *)&g_stru_A796D2.timer + v3); + E0->kraid_var_C = *(uint16 *)((uint8 *)&g_stru_A796D2.timer + v3); earthquake_type = 4; earthquake_timer = 340; Enemy_Kraid *E5 = Get_Kraid(0x140u); @@ -1695,12 +1695,12 @@ void PauseHook_Kraid(void) { // 0xA7C325 uint16 v0 = vram_read_queue_tail; v1 = vram_read_queue_tail; - *(uint16 *)((char *)&vram_read_queue[0].vram_target + vram_read_queue_tail) = ((reg_BG12NBA & 0xFC) << 8) + 15872; - *(uint16 *)((char *)&vram_read_queue[0].dma_parameters + v1) = 129; - *(uint16 *)((char *)&vram_read_queue[0].dma_parameters + v0 + 1) = 57; - *(VoidP *)((char *)&vram_read_queue[0].src.addr + v0) = 20480; + *(uint16 *)((uint8 *)&vram_read_queue[0].vram_target + vram_read_queue_tail) = ((reg_BG12NBA & 0xFC) << 8) + 15872; + *(uint16 *)((uint8 *)&vram_read_queue[0].dma_parameters + v1) = 129; + *(uint16 *)((uint8 *)&vram_read_queue[0].dma_parameters + v0 + 1) = 57; + *(VoidP *)((uint8 *)&vram_read_queue[0].src.addr + v0) = 20480; *(uint16 *)(&vram_read_queue[0].src.bank + v0) = 126; - *(uint16 *)((char *)&vram_read_queue[0].size + v0) = 1024; + *(uint16 *)((uint8 *)&vram_read_queue[0].size + v0) = 1024; vram_read_queue_tail = v0 + 9; } @@ -2149,7 +2149,7 @@ void Phantoon_Init(void) { // 0xA7CDF3 for (int i = 4094; i >= 0; i -= 2) tilemap_stuff[i >> 1] = 824; for (j = 2046; j >= 0; j -= 2) - *(uint16 *)((char *)&kraid_unk9000 + (uint16)j) = 0; + *(uint16 *)((uint8 *)&kraid_unk9000 + (uint16)j) = 0; for (k = 30; (k & 0x8000u) == 0; k -= 2) target_palettes[(k >> 1) + 112] = 0; enemy_bg2_tilemap_size = 864; @@ -2220,7 +2220,7 @@ void Phantoon_Func_1(void) { // 0xA7CEED void Phantoon_Func_2(uint16 k) { // 0xA7CF0C if (!k && (joypad1_newkeys & 0x4000) != 0) - *(uint16 *)((char *)&g_stru_A7902D[0].ypos + 1) = *(uint16 *)((char *)&g_stru_A7902D[0].ypos + 1) == 0; + *(uint16 *)((uint8 *)&g_stru_A7902D[0].ypos + 1) = *(uint16 *)((uint8 *)&g_stru_A7902D[0].ypos + 1) == 0; } uint8 Phantoon_Func_3(void) { // 0xA7CF27 @@ -2611,7 +2611,7 @@ void Phantoon_StartDeathSequence(uint16 k) { // 0xA7D421 v3 = 510; uint16 v4 = reg_BG2HOFS; do { - *(uint16 *)((char *)&g_word_7E9100 + (uint16)v3) = v4; + *(uint16 *)((uint8 *)&g_word_7E9100 + (uint16)v3) = v4; v3 -= 2; } while (v3 >= 0); phantom_related_layer_flag |= 0x4000u; @@ -3813,7 +3813,7 @@ void Dachora_Main(void) { // 0xA7F52E CallEnemyPreInstr(E->dachor_var_F | 0xA70000); } void Dachora_Func_1(uint16 j, uint16 k) { // 0xA7F535 - *(VoidP *)((char *)&R0_.addr + 1) = 32256; + *(VoidP *)((uint8 *)&R0_.addr + 1) = 32256; Enemy_Dachora *E = Get_Dachora(k); uint16 v3 = swap16(E->base.palette_index); R0_.addr = g_off_A7F55F[v3 >> 1]; diff --git a/src/sm_a8.c b/src/sm_a8.c index 38ceeac..02eb86a 100644 --- a/src/sm_a8.c +++ b/src/sm_a8.c @@ -440,7 +440,7 @@ void MorphBallEye_Init(void) { // 0xA89058 E->mbee_var_F = FUNC16(nullsub_244); E->base.current_instruction = g_off_A890DA[v1]; for (int i = 510; i >= 0; i -= 2) - *(uint16 *)((char *)&g_word_7E9100 + (uint16)i) = 255; + *(uint16 *)((uint8 *)&g_word_7E9100 + (uint16)i) = 255; } else { E->mbee_var_F = FUNC16(MorphBallEye_Func_1); if ((E->mbee_parameter_1 & 1) != 0) @@ -713,7 +713,7 @@ void WreckedShipGhost_Func_2(uint16 k) { // 0xA89BAD E->wsgt_var_07 = v2; E->wsgt_var_08 = v2; E->wsgt_var_09 = 12; - uint16 v3 = *(uint16 *)((char *)&samus_y_pos + cur_enemy_index); + uint16 v3 = *(uint16 *)((uint8 *)&samus_y_pos + cur_enemy_index); E->wsgt_var_0A = v3; E->wsgt_var_0B = v3; E->wsgt_var_0C = v3; @@ -814,7 +814,7 @@ void WreckedShipGhost_Func_7(uint16 k) { // 0xA89D36 Enemy_WreckedShipGhost *E = Get_WreckedShipGhost(k); if ((int16)(samus_x_pos - E->wsgt_var_07) < 0 || (int16)(samus_x_pos - E->wsgt_var_08) >= 0 - || (v2 = *(uint16 *)((char *)&samus_y_pos + k), (int16)(v2 - E->wsgt_var_0B) < 0) + || (v2 = *(uint16 *)((uint8 *)&samus_y_pos + k), (int16)(v2 - E->wsgt_var_0B) < 0) || (int16)(v2 - E->wsgt_var_0C) >= 0) { E->wsgt_var_0D = g_word_A89A9E; v4 = 0; @@ -858,8 +858,8 @@ LABEL_13: E->wsgt_var_0D = g_word_A89A9E; E->wsgt_var_0E = g_word_A89A9C; int v6 = (uint16)(E->wsgt_var_09 + E->wsgt_var_05) >> 1; - E->base.x_pos = g_word_A89AA8[v6] + *(uint16 *)((char *)&samus_x_pos + k); - E->base.y_pos = g_word_A89AA8[v6 + 1] + *(uint16 *)((char *)&samus_y_pos + k); + E->base.x_pos = g_word_A89AA8[v6] + *(uint16 *)((uint8 *)&samus_x_pos + k); + E->base.y_pos = g_word_A89AA8[v6 + 1] + *(uint16 *)((uint8 *)&samus_y_pos + k); return; } } @@ -1082,8 +1082,8 @@ void YappingMaw_Func_2(void) { // 0xA8A28C E->base.current_instruction = g_off_A8A097[v2 >> 1]; E->base.instruction_timer = 1; E->base.timer = 0; - E->ymw_var_32 = *(uint16 *)((char *)&g_word_A8A0A7 + (uint16)(2 * v2)); - E->ymw_var_33 = *(uint16 *)((char *)&g_word_A8A0A9 + (uint16)(2 * v2)); + E->ymw_var_32 = *(uint16 *)((uint8 *)&g_word_A8A0A7 + (uint16)(2 * v2)); + E->ymw_var_33 = *(uint16 *)((uint8 *)&g_word_A8A0A9 + (uint16)(2 * v2)); E->ymw_var_A = FUNC16(YappingMaw_Func_8); } @@ -1383,10 +1383,10 @@ void YappingMaw_Shot(void) { // 0xA8A7BD E->ymw_var_30 = 0; } } else { - *(uint16 *)((char *)enemy_projectile_id + E->ymw_var_40) = 0; - *(uint16 *)((char *)enemy_projectile_id + E->ymw_var_41) = 0; - *(uint16 *)((char *)enemy_projectile_id + E->ymw_var_42) = 0; - *(uint16 *)((char *)enemy_projectile_id + E->ymw_var_43) = 0; + *(uint16 *)((uint8 *)enemy_projectile_id + E->ymw_var_40) = 0; + *(uint16 *)((uint8 *)enemy_projectile_id + E->ymw_var_41) = 0; + *(uint16 *)((uint8 *)enemy_projectile_id + E->ymw_var_42) = 0; + *(uint16 *)((uint8 *)enemy_projectile_id + E->ymw_var_43) = 0; sprite_instr_list_ptrs[E->ymw_var_46 >> 1] = 0; if (samus_input_handler != FUNC16(Samus_InputHandler_E91D)) samus_input_handler = FUNC16(Samus_InputHandler_E913); @@ -1984,7 +1984,7 @@ uint16 Beetom_Func_2(void) { // 0xA8B7EF R20_ = 0; do { R18_ += R24_; - R20_ += *(uint16 *)((char *)kCommonEnemySpeeds_Quadratic + (uint16)(8 * R18_) + 1); + R20_ += *(uint16 *)((uint8 *)kCommonEnemySpeeds_Quadratic + (uint16)(8 * R18_) + 1); } while (sign16(R20_ - R22_)); return R18_; } @@ -3842,7 +3842,7 @@ void WreckedShipSpark_Init(void) { // 0xA8E637 E->base.instruction_timer = 1; if ((boss_bits_for_area[area_index] & 1) == 0) { v3 = Get_WreckedShipSpark(cur_enemy_index); - v3->base.properties |= *(uint16 *)((char *)&gVramWriteEntry(0)[6].vram_dst + 1); + v3->base.properties |= *(uint16 *)((uint8 *)&gVramWriteEntry(0)[6].vram_dst + 1); } } @@ -4399,7 +4399,7 @@ void KiHunter_Func_11(void) { // 0xA8F7DB int16 v2; Enemy_KiHunter *E = Get_KiHunter(cur_enemy_index); - E->khr_var_F += *(uint16 *)((char *)&kCommonEnemySpeeds_Quadratic[2] + E->khr_var_F += *(uint16 *)((uint8 *)&kCommonEnemySpeeds_Quadratic[2] + (uint16)(8 * HIBYTE(E->khr_var_B)) + 1); draw_enemy_layer = g_byte_A8F186; @@ -4438,7 +4438,7 @@ void KiHunter_Func_14(void) { // 0xA8F8AD int16 khr_var_07; Enemy_KiHunter *E = Get_KiHunter(cur_enemy_index); - E->khr_var_F += *(uint16 *)((char *)kCommonEnemySpeeds_Quadratic + E->khr_var_F += *(uint16 *)((uint8 *)kCommonEnemySpeeds_Quadratic + (uint16)(8 * HIBYTE(E->khr_var_B)) + 1); draw_enemy_layer = g_byte_A8F186; @@ -4494,7 +4494,7 @@ void KiHunter_Func_17(void) { // 0xA8F98D uint16 v3 = E->khr_var_0A + 384; E->khr_var_0A = v3; v3 >>= 8; - v5 = *(uint16 *)((char *)kCommonEnemySpeeds_Quadratic + (uint16)(8 * v3) + 1) + E->khr_var_D; + v5 = *(uint16 *)((uint8 *)kCommonEnemySpeeds_Quadratic + (uint16)(8 * v3) + 1) + E->khr_var_D; E->khr_var_D = v5; } while (sign16(v5 - 0x2000)); } \ No newline at end of file diff --git a/src/sm_a9.c b/src/sm_a9.c index 01adc37..bb97caf 100644 --- a/src/sm_a9.c +++ b/src/sm_a9.c @@ -491,7 +491,7 @@ void MotherBrainBody_0_Wait(void) { // 0xA98949 uint16 v0 = 0; v1 = 0; do { - if (!*(uint16 *)((char *)enemy_projectile_id + v0)) + if (!*(uint16 *)((uint8 *)enemy_projectile_id + v0)) ++v1; v0 += 2; } while ((int16)(v0 - 36) < 0); @@ -2037,7 +2037,7 @@ void MotherBrain_ExplodeEscapeDoor(void) { // 0xA9B3A3 } void MotherBrain_SamusCollDetect(void) { // 0xA9B3B6 - char v1; // cf + int8 v1; // cf Enemy_MotherBrain *E0 = Get_MotherBrain(0); R26_ = E0->mbn_var_04; @@ -2818,7 +2818,7 @@ void MotherBrain_HandleRainbowBeamPalette(void) { // 0xA9BCFD } while (!mbn_var_01); uint16 v2 = v1 + 2; Get_MotherBrain(0x40)->mbn_var_01 = v2; - MotherBrain_WritePalette(*(uint16 *)((char *)MotherBrain_RainbowBeamPalettes + v2 - 2)); + MotherBrain_WritePalette(*(uint16 *)((uint8 *)MotherBrain_RainbowBeamPalettes + v2 - 2)); } } @@ -3523,7 +3523,7 @@ uint8 ProcessSpriteTilesTransfers(uint8 db, uint16 k) { // 0xA9C5BE if (GET_WORD(v5)) { v7 = gVramWriteEntry(vram_write_queue_tail); v7->size = v6; - *(VoidP *)((char *)&v7->src.addr + 1) = GET_WORD(v5 + 3); + *(VoidP *)((uint8 *)&v7->src.addr + 1) = GET_WORD(v5 + 3); v7->src.addr = GET_WORD(v5 + 2); v7->vram_dst = GET_WORD(v5 + 5); vram_write_queue_tail = v4 + 7; @@ -4385,8 +4385,8 @@ void MotherBrain_SetupBrainPalForLaser(void) { // 0xA9D1FF } void MotherBrain_HandleBrainPal(void) { // 0xA9D206 - char mbn_var_D_high; - char mbn_var_D; + int8 mbn_var_D_high; + int8 mbn_var_D; Enemy_MotherBrain *E = Get_MotherBrain(0); if (E->mbn_var_00 != 1) { @@ -4583,7 +4583,7 @@ void DeadTorizo_Func_1(void) { // 0xA9D4CF v10 = gVramWriteEntry(v3); v10->size = v9; int v11 = v8 >> 1; - *(VoidP *)((char *)&v10->src.addr + 1) = g_word_A9D583[v11 + 1]; + *(VoidP *)((uint8 *)&v10->src.addr + 1) = g_word_A9D583[v11 + 1]; v10->src.addr = g_word_A9D583[v11 + 2]; v10->vram_dst = g_word_A9D583[v11 + 3]; v3 += 7; @@ -4597,7 +4597,7 @@ void DeadTorizo_Func_1(void) { // 0xA9D4CF v5 = gVramWriteEntry(v3); v5->size = v4; int v6 = v2 >> 1; - *(VoidP *)((char *)&v5->src.addr + 1) = g_word_A9D549[v6 + 1]; + *(VoidP *)((uint8 *)&v5->src.addr + 1) = g_word_A9D549[v6 + 1]; v5->src.addr = g_word_A9D549[v6 + 2]; v5->vram_dst = g_word_A9D549[v6 + 3]; v3 += 7; @@ -5059,7 +5059,7 @@ void ProcessCorpseRottingVramTransfers(uint16 k) { // 0xA9DCB9 do { VramWriteEntry *v3 = gVramWriteEntry(v1); v3->size = v2; - *(VoidP *)((char *)&v3->src.addr + 1) = *((uint16 *)p + 1); + *(VoidP *)((uint8 *)&v3->src.addr + 1) = *((uint16 *)p + 1); v3->src.addr = *((uint16 *)p + 2); v3->vram_dst = *((uint16 *)p + 3); v1 += 7; @@ -5902,86 +5902,86 @@ void MotherBrain_CorpseRottingMoveFunc(uint16 j, uint16 k) { // 0xA9EA40 Enemy_DeadMonsters *E = Get_DeadMonsters(0); if (E->dms_var_41 >= 0x10) { if (sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E9002 + j) = *(uint16 *)((char *)&kraid_unk9000 + k); - *(uint16 *)((char *)&g_word_7E9012 + j) = *(uint16 *)((char *)&g_word_7E900F + k + 1); + *(uint16 *)((uint8 *)&g_word_7E9002 + j) = *(uint16 *)((uint8 *)&kraid_unk9000 + k); + *(uint16 *)((uint8 *)&g_word_7E9012 + j) = *(uint16 *)((uint8 *)&g_word_7E900F + k + 1); } - *(uint16 *)((char *)&kraid_unk9000 + k) = 0; - *(uint16 *)((char *)&g_word_7E900F + k + 1) = 0; + *(uint16 *)((uint8 *)&kraid_unk9000 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E900F + k + 1) = 0; } if (E->dms_var_41 >= 8u) { if (sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E9022 + j) = *(uint16 *)((char *)&g_word_7E9020 + k); - *(uint16 *)((char *)&g_word_7E9032 + j) = *(uint16 *)((char *)&g_word_7E9030 + k); + *(uint16 *)((uint8 *)&g_word_7E9022 + j) = *(uint16 *)((uint8 *)&g_word_7E9020 + k); + *(uint16 *)((uint8 *)&g_word_7E9032 + j) = *(uint16 *)((uint8 *)&g_word_7E9030 + k); } - *(uint16 *)((char *)&g_word_7E9020 + k) = 0; - *(uint16 *)((char *)&g_word_7E9030 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E9020 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E9030 + k) = 0; } if (sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E9042 + j) = *(uint16 *)((char *)&g_word_7E9040 + k); - *(uint16 *)((char *)&g_word_7E9052 + j) = *(uint16 *)((char *)&g_word_7E9050 + k); + *(uint16 *)((uint8 *)&g_word_7E9042 + j) = *(uint16 *)((uint8 *)&g_word_7E9040 + k); + *(uint16 *)((uint8 *)&g_word_7E9052 + j) = *(uint16 *)((uint8 *)&g_word_7E9050 + k); } - *(uint16 *)((char *)&g_word_7E9040 + k) = 0; - *(uint16 *)((char *)&g_word_7E9050 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E9040 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E9050 + k) = 0; if (sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E9062 + j) = *(uint16 *)((char *)&g_word_7E9060 + k); - *(uint16 *)((char *)&g_word_7E9072 + j) = *(uint16 *)((char *)&g_word_7E9070 + k); + *(uint16 *)((uint8 *)&g_word_7E9062 + j) = *(uint16 *)((uint8 *)&g_word_7E9060 + k); + *(uint16 *)((uint8 *)&g_word_7E9072 + j) = *(uint16 *)((uint8 *)&g_word_7E9070 + k); } - *(uint16 *)((char *)&g_word_7E9060 + k) = 0; - *(uint16 *)((char *)&g_word_7E9070 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E9060 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E9070 + k) = 0; if (sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E9082 + j) = *(uint16 *)((char *)&g_word_7E9080 + k); - *(uint16 *)((char *)&g_word_7E9092 + j) = *(uint16 *)((char *)&g_word_7E9090 + k); + *(uint16 *)((uint8 *)&g_word_7E9082 + j) = *(uint16 *)((uint8 *)&g_word_7E9080 + k); + *(uint16 *)((uint8 *)&g_word_7E9092 + j) = *(uint16 *)((uint8 *)&g_word_7E9090 + k); } - *(uint16 *)((char *)&g_word_7E9080 + k) = 0; - *(uint16 *)((char *)&g_word_7E9090 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E9080 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E9090 + k) = 0; if (E->dms_var_41 >= 8u) { if (sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E90A2 + j) = *(uint16 *)((char *)&g_word_7E90A0 + k); - *(uint16 *)((char *)&g_word_7E90B2 + j) = *(uint16 *)((char *)&g_word_7E90B0 + k); + *(uint16 *)((uint8 *)&g_word_7E90A2 + j) = *(uint16 *)((uint8 *)&g_word_7E90A0 + k); + *(uint16 *)((uint8 *)&g_word_7E90B2 + j) = *(uint16 *)((uint8 *)&g_word_7E90B0 + k); } - *(uint16 *)((char *)&g_word_7E90A0 + k) = 0; - *(uint16 *)((char *)&g_word_7E90B0 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E90A0 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E90B0 + k) = 0; } if (E->dms_var_41 >= 0x20) { if (sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E90C2 + j) = *(uint16 *)((char *)&g_word_7E90C0 + k); - *(uint16 *)((char *)&g_word_7E90D2 + j) = *(uint16 *)((char *)&g_word_7E90D0 + k); + *(uint16 *)((uint8 *)&g_word_7E90C2 + j) = *(uint16 *)((uint8 *)&g_word_7E90C0 + k); + *(uint16 *)((uint8 *)&g_word_7E90D2 + j) = *(uint16 *)((uint8 *)&g_word_7E90D0 + k); } - *(uint16 *)((char *)&g_word_7E90C0 + k) = 0; - *(uint16 *)((char *)&g_word_7E90D0 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E90C0 + k) = 0; + *(uint16 *)((uint8 *)&g_word_7E90D0 + k) = 0; } } void MotherBrain_CorpseRottingCopyFunc(uint16 j, uint16 k) { // 0xA9EB0B Enemy_DeadMonsters *E = Get_DeadMonsters(0); if (E->dms_var_41 >= 0x10u && sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E9002 + j) = *(uint16 *)((char *)&kraid_unk9000 + k); - *(uint16 *)((char *)&g_word_7E9012 + j) = *(uint16 *)((char *)&g_word_7E900F + k + 1); + *(uint16 *)((uint8 *)&g_word_7E9002 + j) = *(uint16 *)((uint8 *)&kraid_unk9000 + k); + *(uint16 *)((uint8 *)&g_word_7E9012 + j) = *(uint16 *)((uint8 *)&g_word_7E900F + k + 1); } if (E->dms_var_41 >= 8u && sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E9022 + j) = *(uint16 *)((char *)&g_word_7E9020 + k); - *(uint16 *)((char *)&g_word_7E9032 + j) = *(uint16 *)((char *)&g_word_7E9030 + k); + *(uint16 *)((uint8 *)&g_word_7E9022 + j) = *(uint16 *)((uint8 *)&g_word_7E9020 + k); + *(uint16 *)((uint8 *)&g_word_7E9032 + j) = *(uint16 *)((uint8 *)&g_word_7E9030 + k); } if (sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E9042 + j) = *(uint16 *)((char *)&g_word_7E9040 + k); - *(uint16 *)((char *)&g_word_7E9052 + j) = *(uint16 *)((char *)&g_word_7E9050 + k); + *(uint16 *)((uint8 *)&g_word_7E9042 + j) = *(uint16 *)((uint8 *)&g_word_7E9040 + k); + *(uint16 *)((uint8 *)&g_word_7E9052 + j) = *(uint16 *)((uint8 *)&g_word_7E9050 + k); } if (sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E9062 + j) = *(uint16 *)((char *)&g_word_7E9060 + k); - *(uint16 *)((char *)&g_word_7E9072 + j) = *(uint16 *)((char *)&g_word_7E9070 + k); + *(uint16 *)((uint8 *)&g_word_7E9062 + j) = *(uint16 *)((uint8 *)&g_word_7E9060 + k); + *(uint16 *)((uint8 *)&g_word_7E9072 + j) = *(uint16 *)((uint8 *)&g_word_7E9070 + k); } if (sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E9082 + j) = *(uint16 *)((char *)&g_word_7E9080 + k); - *(uint16 *)((char *)&g_word_7E9092 + j) = *(uint16 *)((char *)&g_word_7E9090 + k); + *(uint16 *)((uint8 *)&g_word_7E9082 + j) = *(uint16 *)((uint8 *)&g_word_7E9080 + k); + *(uint16 *)((uint8 *)&g_word_7E9092 + j) = *(uint16 *)((uint8 *)&g_word_7E9090 + k); } if (E->dms_var_41 >= 8u && sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E90A2 + j) = *(uint16 *)((char *)&g_word_7E90A0 + k); - *(uint16 *)((char *)&g_word_7E90B2 + j) = *(uint16 *)((char *)&g_word_7E90B0 + k); + *(uint16 *)((uint8 *)&g_word_7E90A2 + j) = *(uint16 *)((uint8 *)&g_word_7E90A0 + k); + *(uint16 *)((uint8 *)&g_word_7E90B2 + j) = *(uint16 *)((uint8 *)&g_word_7E90B0 + k); } if (E->dms_var_41 >= 0x20) { if (sign16(E->dms_var_41 - 46)) { - *(uint16 *)((char *)&g_word_7E90C2 + j) = *(uint16 *)((char *)&g_word_7E90C0 + k); - *(uint16 *)((char *)&g_word_7E90D2 + j) = *(uint16 *)((char *)&g_word_7E90D0 + k); + *(uint16 *)((uint8 *)&g_word_7E90C2 + j) = *(uint16 *)((uint8 *)&g_word_7E90C0 + k); + *(uint16 *)((uint8 *)&g_word_7E90D2 + j) = *(uint16 *)((uint8 *)&g_word_7E90D0 + k); } } } @@ -6476,7 +6476,7 @@ void Shitroid_GraduallyAccelerateTowardsPt(uint16 k, uint16 j) { // 0xA9F46B void Shitroid_GraduallyAccelerateHoriz(uint16 k) { // 0xA9F4E6 int16 v2; int16 v4; - char v5; // cf + int8 v5; // cf int16 v7; int16 shitr_var_B; int16 v11; @@ -6633,7 +6633,7 @@ void Shitroid_HandleCutscenePalette_LowHealth(void) { // 0xA9F68F } void Shitroid_HandleCutscenePalette_Common(void) { // 0xA9F699 - char shitro_var_D_high; + int8 shitro_var_D_high; Enemy_Shitroid *E = Get_Shitroid(cur_enemy_index); shitro_var_D_high = HIBYTE(E->shitr_var_D); diff --git a/src/sm_aa.c b/src/sm_aa.c index 40628c1..e230364 100644 --- a/src/sm_aa.c +++ b/src/sm_aa.c @@ -802,7 +802,7 @@ const uint16 *Torizo_Instr_58(uint16 k, const uint16 *jp) { // 0xAAD0F3 int16 v2; v2 = 34; - while (*(uint16 *)((char *)enemy_projectile_id + (uint16)v2) != 0xB1C0) { + while (*(uint16 *)((uint8 *)enemy_projectile_id + (uint16)v2) != 0xB1C0) { v2 -= 2; if (v2 < 0) return jp + 1; @@ -1171,12 +1171,12 @@ const uint16 *Shaktool_Instr_3(uint16 k, const uint16 *jp) { // 0xAAD93F const uint16 *Shaktool_Instr_4(uint16 k, const uint16 *jp) { // 0xAAD94A Enemy_Shaktool *E = Get_Shaktool(k); - return Shaktool_D956(k, jp, *(uint16 *)((char *)&E->shakt_var_A + 1) ^ 0x80); + return Shaktool_D956(k, jp, *(uint16 *)((uint8 *)&E->shakt_var_A + 1) ^ 0x80); } const uint16 *Shaktool_Instr_5(uint16 k, const uint16 *jp) { // 0xAAD953 Enemy_Shaktool *E = Get_Shaktool(k); - return Shaktool_D956(k, jp, *(uint16 *)((char *)&E->shakt_var_A + 1)); + return Shaktool_D956(k, jp, *(uint16 *)((uint8 *)&E->shakt_var_A + 1)); } const uint16 *Shaktool_D956(uint16 k, const uint16 *jp, uint16 a) { // 0xAAD956 @@ -1485,8 +1485,8 @@ void Shaktool_Init(void) { // 0xAADE43 int v3 = shakto_parameter_2 >> 1; E->base.properties |= g_word_AADE95[v3]; E->shakt_var_E = cur_enemy_index - g_word_AADEA3[v3]; - E->shakt_var_F = *(uint16 *)((char *)g_off_AADEDB + shakto_parameter_2); - E->shakt_var_C = *(uint16 *)((char *)g_word_AADEE9 + shakto_parameter_2) - g_word_AADEF7[v3]; + E->shakt_var_F = *(uint16 *)((uint8 *)g_off_AADEDB + shakto_parameter_2); + E->shakt_var_C = *(uint16 *)((uint8 *)g_word_AADEE9 + shakto_parameter_2) - g_word_AADEF7[v3]; E->shakt_var_B = g_word_AADEB1[v3]; E->base.current_instruction = g_word_AADEB1[v3 + 7]; E->base.layer = g_word_AADECD[v3]; diff --git a/src/sm_ad.c b/src/sm_ad.c index cd153f3..cce72d2 100644 --- a/src/sm_ad.c +++ b/src/sm_ad.c @@ -32,7 +32,7 @@ void MotherBrain_CalcHdma(void) { // 0xADDE00 R18_ = HIBYTE(E->mbn_var_33) >> 1; E->mbn_var_3A = E->mbn_var_31 - R18_; E->mbn_var_3B = R18_ + E->mbn_var_31; - uint16 v2 = (*(uint16 *)((char *)&E1->base.enemy_ptr + 1) + 3584) & 0xFF00; + uint16 v2 = (*(uint16 *)((uint8 *)&E1->base.enemy_ptr + 1) + 3584) & 0xFF00; E->mbn_var_3C = v2; E->mbn_var_3E = v2; uint16 v3 = E1->base.y_pos + 5; diff --git a/src/sm_b3.c b/src/sm_b3.c index 8bd39d5..10d93d8 100644 --- a/src/sm_b3.c +++ b/src/sm_b3.c @@ -1165,8 +1165,8 @@ void Botwoon_Func_21(void) { // 0xB39C48 void Botwoon_Func_22(void) { // 0xB39C7B Enemy_Botwoon *E = Get_Botwoon(cur_enemy_index); uint16 botwoon_var_B = E->botwoon_var_B; - *(uint16 *)((char *)&kraid_unk9000 + botwoon_var_B) = E->base.x_pos; - *(uint16 *)((char *)&g_word_7E9002 + botwoon_var_B) = E->base.y_pos; + *(uint16 *)((uint8 *)&kraid_unk9000 + botwoon_var_B) = E->base.x_pos; + *(uint16 *)((uint8 *)&g_word_7E9002 + botwoon_var_B) = E->base.y_pos; } void Botwoon_Func_23(void) { // 0xB39C90 @@ -1199,8 +1199,8 @@ void Botwoon_Func_23(void) { // 0xB39C90 } v6 = R18_; int v7 = botwoo_var_00 >> 1; - enemy_projectile_x_pos[v7] = *(uint16 *)((char *)&kraid_unk9000 + R18_); - enemy_projectile_y_pos[v7] = *(uint16 *)((char *)&g_word_7E9002 + v6); + enemy_projectile_x_pos[v7] = *(uint16 *)((uint8 *)&kraid_unk9000 + R18_); + enemy_projectile_y_pos[v7] = *(uint16 *)((uint8 *)&g_word_7E9002 + v6); R18_ = (R18_ - E->botwoon_var_C) & 0x3FF; --R20_; --R20_;