* some matches

* Decompile code_0x80186A70 Add defines for KSEG0/1 and (Un)Cached RDRAM

* format

* cleanup

* moved osFlash and imported data

* implement fixes

* format again

* Update include/functions.h

Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>

* Update include/variables.h

Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>

* Update src/libultra/flash/osFlash.c

Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>

* Update src/libultra/flash/osFlash.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* returns are needed

* format

* Update src/libultra/flash/osFlash.c

Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>

* Update src/libultra/flash/osFlash.c

Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>

* Update src/libultra/flash/osFlash.c

Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>

* Update src/libultra/flash/osFlash.c

Co-authored-by: Kenix3 <kenixwhisperwind@gmail.com>

* Update src/libultra/flash/osFlash.c

Co-authored-by: Kenix3 <kenixwhisperwind@gmail.com>

* Update src/libultra/flash/osFlash.c

Co-authored-by: Kenix3 <kenixwhisperwind@gmail.com>

* should be fixed

Co-authored-by: petrie911 <pmontag@DESKTOP-LG8A167.localdomain>
Co-authored-by: MMDecomp <mmdecomp@gmail.com>
Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
Co-authored-by: Kenix3 <kenixwhisperwind@gmail.com>
This commit is contained in:
petrie911
2021-11-03 17:30:20 -05:00
committed by GitHub
parent 78153a1bf4
commit ad4c16d40f
11 changed files with 420 additions and 95 deletions
+17 -15
View File
@@ -416,7 +416,7 @@ void __osViInit(void);
void __osViSwapContext(void);
OSMesgQueue* osPiGetCmdQueue(void);
f32 __cosf(f32 __x);
// void osEPiReadIo(void);
s32 osEPiReadIo(OSPiHandle* pihandle, u32 devAddr, u32* data);
void osViSetSpecialFeatures(u32 func);
s16 coss(u16 x);
void osSetTime(OSTime ticks);
@@ -439,7 +439,7 @@ u32 __osGetFpcCsr(void);
// void corrupted_init(void);
// void corrupted(void);
u32 osAiGetLength(void);
// void osEPiWriteIo(void);
s32 osEPiWriteIo(OSPiHandle* pihandle, u32 devAddr, u32 data);
void osMapTLBRdb(void);
void osYieldThread(void);
// void guTranslate(void);
@@ -3494,19 +3494,21 @@ void SysFlashrom_ThreadEntry(s80185D40* param_1);
// void func_80185F04(void);
// void func_80185F64(void);
s32 func_80185F90(u32 param_1);
// void func_80186A70(void);
// void func_80186B78(void);
// void func_80186CAC(void);
// void func_80186D60(void);
// void func_80186E64(void);
// void func_80186EC8(void);
// void func_80187018(void);
// void func_80187080(void);
// void func_80187124(void);
// void func_80187284(void);
// void func_801872FC(void);
// void func_801873BC(void);
// void func_8018752C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
u32 osFlashGetAddr(u32 pageNum);
OSPiHandle* osFlashReInit(u8 latency, u8 pulse, u8 pageSize, u8 relDuration, u32 start);
void osFlashChange(u32 flashNum);
OSPiHandle* osFlashInit(void);
void osFlashReadStatus(u8* flashStatus);
void osFlashReadId(u32* flashType, u32* flashVendor);
void osFlashClearStatus(void);
s32 osFlashAllErase(void);
void osFlashAllEraseThrough(void);
s32 osFlashCheckEraseEnd(void);
s32 osFlashSectorErase(u32 pageNum);
void osFlashSectorEraseThrough(u32 pageNum);
s32 osFlashWriteBuffer(OSIoMesg* mb, s32 priority, void* dramAddr, OSMesgQueue* mq);
s32 osFlashWriteArray(u32 pageNum);
s32 osFlashReadArray(OSIoMesg* mb, s32 priority, u32 pageNum, void* dramAddr, u32 pageCount, OSMesgQueue* mq);
// void func_801877D0(void);
// void func_80187B64(void);
// void func_80187BEC(void);
+4 -7
View File
@@ -8,13 +8,10 @@
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
#define ARRAY_COUNTU(arr) (u32)(sizeof(arr) / sizeof(arr[0]))
#define HW_REG(reg, type) *(volatile type*)((reg) | 0xa0000000)
// TODO: After uintptr_t cast change should have an AVOID_UB target that just toggles the KSEG0 bit in the address
// rather than add/sub 0x80000000
#define PHYSICAL_TO_VIRTUAL(addr) ((uintptr_t)(addr) + 0x80000000)
#define PHYSICAL_TO_VIRTUAL2(addr) ((uintptr_t)(addr)-0x80000000)
#define VIRTUAL_TO_PHYSICAL(addr) (uintptr_t)((u8*)(addr)-0x80000000)
// TODO: After uintptr_t cast change should have an AVOID_UB target that just toggles the KSEG0 bit in the address rather than add/sub 0x80000000
#define PHYSICAL_TO_VIRTUAL(addr) ((uintptr_t)(addr) + RDRAM_CACHED)
#define PHYSICAL_TO_VIRTUAL2(addr) ((uintptr_t)(addr) - RDRAM_CACHED)
#define VIRTUAL_TO_PHYSICAL(addr) (uintptr_t)((u8*)(addr) - RDRAM_CACHED)
#define SEGMENTED_TO_VIRTUAL(addr) (void*)(PHYSICAL_TO_VIRTUAL(gSegments[SEGMENT_NUMBER(addr)]) + SEGMENT_OFFSET(addr))
#define GET_ACTIVE_CAM(globalCtx) ((globalCtx)->cameraPtrs[(globalCtx)->activeCamera])
+11 -1
View File
@@ -1,7 +1,17 @@
#ifndef _ULTRA64_HARDWARE_H_
#define _ULTRA64_HARDWARE_H_
#define HW_REG(reg, type) *(volatile type*)((reg) | 0xa0000000)
// Segment Wrapper
// Uncached RDRAM
#define KSEG1 0xA0000000 // 0xA0000000 - 0xBFFFFFFF Physical memory, uncached, unmapped
#define RDRAM_UNCACHED KSEG1
// Cached RDRAM
#define KSEG0 0x80000000 // 0x80000000 - 0x9FFFFFFF Physical memory, cached, unmapped
#define RDRAM_CACHED KSEG0
// Volatile access wrapper, enforcing uncached memory
#define HW_REG(reg, type) *(volatile type*)((reg) | KSEG1)
#define AI_DRAM_ADDR_REG 0x04500000
#define AI_LEN_REG 0x04500004
-6
View File
@@ -3538,12 +3538,6 @@ extern StackEntry sys_flashromStackEntry;
extern OSThread sys_flashromOSThread;
extern s80185D40 D_801FD008;
extern OSMesg D_801FD034;
// extern UNK_TYPE1 D_801FD040;
extern OSIoMesg D_801FD050;
extern OSMesgQueue D_801FD068;
extern OSPiHandle D_801FD080;
// extern UNK_TYPE1 D_801FD0F4;
// extern UNK_TYPE1 D_801FD0F8;
// extern UNK_TYPE1 D_801FD120;
// extern UNK_TYPE1 D_801FD140;
// extern UNK_TYPE1 D_801FD158;
+39
View File
@@ -1694,4 +1694,43 @@ typedef struct {
/* 0x04 */ const char* name;
} FlagSetEntry; // size = 0x08
// TODO: Dedicated Header?
#define FRAM_BASE_ADDRESS 0x08000000 // FRAM Base Address in Cart Memory
#define FRAM_STATUS_REGISTER FRAM_BASE_ADDRESS // FRAM Base Address in Cart Memory
#define FRAM_COMMAND_REGISTER 0x10000 // Located at 0x08010000 on the Cart
enum fram_command {
/* Does nothing for FRAM_COMMAND_SET_MODE_READ_AND_STATUS, FRAM_MODE_NOP, FRAM_COMMAND_SET_MODE_STATUS_AND_STATUS
Initializes fram to 0xFF in FRAM_MODE_ERASE
Writes Contents in FLASHRAM_MODE_WRITE
After execution, sets FRAM_MODE to FRAM_MODE_NOP */
FRAM_COMMAND_EXECUTE = 0xD2000000,
/* flashram->erase_offset = (command & 0xffff) * 128; */
FRAM_COMMAND_SET_ERASE_SECTOR_OFFSET = 0x4B000000,
/* flashram->mode = FLASHRAM_MODE_ERASE;
flashram->status = 0x1111800800c20000LL; */
FRAM_COMMAND_SET_MODE_ERASE_AND_STATUS = 0x78000000,
/* flashram->erase_offset = (command & 0xffff) * 128;
flashram->status = 0x1111800400c20000LL; */
FRAM_COMMAND_SET_ERASE_SECTOR_OFFSET_AND_STATUS = 0xA5000000,
/* flashram->mode = FLASHRAM_MODE_WRITE; */
FRAM_COMMAND_SET_MODE_WRITE = 0xB4000000,
/* flashram->mode = FLASHRAM_MODE_STATUS;
flashram->status = 0x1111800100c20000LL; */
FRAM_COMMAND_SET_MODE_STATUS_AND_STATUS = 0xE1000000,
/* flashram->mode = FLASHRAM_MODE_READ;
flashram->status = 0x11118004f0000000LL; */
FRAM_COMMAND_SET_MODE_READ_AND_STATUS = 0xF0000000,
/* unk */
FRAM_COMMAND_UNK_ERASE_OPERATION = 0x3C000000
};
enum fram_mode {
FRAM_MODE_NOP = 0,
FRAM_MODE_ERASE,
FRAM_MODE_WRITE,
FRAM_MODE_READ,
FRAM_MODE_STATUS
};
#endif