mirror of https://github.com/PrimeDecomp/prime.git
parent
d86009a79d
commit
4f9bb0ae1c
|
@ -3,8 +3,7 @@
|
||||||
.section .sbss, "wa"
|
.section .sbss, "wa"
|
||||||
.balign 8
|
.balign 8
|
||||||
|
|
||||||
.global lbl_805A9240
|
gInitialized:
|
||||||
lbl_805A9240:
|
|
||||||
.skip 0x8
|
.skip 0x8
|
||||||
|
|
||||||
.section .text, "ax"
|
.section .text, "ax"
|
||||||
|
@ -14,7 +13,7 @@ Init__7CBasicsFv:
|
||||||
/* 802D6354 002D32B4 94 21 FF F0 */ stwu r1, -0x10(r1)
|
/* 802D6354 002D32B4 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||||
/* 802D6358 002D32B8 7C 08 02 A6 */ mflr r0
|
/* 802D6358 002D32B8 7C 08 02 A6 */ mflr r0
|
||||||
/* 802D635C 002D32BC 90 01 00 14 */ stw r0, 0x14(r1)
|
/* 802D635C 002D32BC 90 01 00 14 */ stw r0, 0x14(r1)
|
||||||
/* 802D6360 002D32C0 88 0D A6 80 */ lbz r0, lbl_805A9240@sda21(r13)
|
/* 802D6360 002D32C0 88 0D A6 80 */ lbz r0, gInitialized@sda21(r13)
|
||||||
/* 802D6364 002D32C4 28 00 00 00 */ cmplwi r0, 0
|
/* 802D6364 002D32C4 28 00 00 00 */ cmplwi r0, 0
|
||||||
/* 802D6368 002D32C8 40 82 00 48 */ bne lbl_802D63B0
|
/* 802D6368 002D32C8 40 82 00 48 */ bne lbl_802D63B0
|
||||||
/* 802D636C 002D32CC 48 0A 75 3D */ bl OSInit
|
/* 802D636C 002D32CC 48 0A 75 3D */ bl OSInit
|
||||||
|
@ -33,10 +32,10 @@ Init__7CBasicsFv:
|
||||||
/* 802D63A0 002D3300 48 09 B8 05 */ bl DVDInit
|
/* 802D63A0 002D3300 48 09 B8 05 */ bl DVDInit
|
||||||
/* 802D63A4 002D3304 4B FF FF 15 */ bl InitGlobalTimer__10CStopwatchFv
|
/* 802D63A4 002D3304 4B FF FF 15 */ bl InitGlobalTimer__10CStopwatchFv
|
||||||
/* 802D63A8 002D3308 38 00 00 01 */ li r0, 1
|
/* 802D63A8 002D3308 38 00 00 01 */ li r0, 1
|
||||||
/* 802D63AC 002D330C 98 0D A6 80 */ stb r0, lbl_805A9240@sda21(r13)
|
/* 802D63AC 002D330C 98 0D A6 80 */ stb r0, gInitialized@sda21(r13)
|
||||||
lbl_802D63B0:
|
lbl_802D63B0:
|
||||||
/* 802D63B0 002D3310 80 01 00 14 */ lwz r0, 0x14(r1)
|
/* 802D63B0 002D3310 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||||
/* 802D63B4 002D3314 88 6D A6 80 */ lbz r3, lbl_805A9240@sda21(r13)
|
/* 802D63B4 002D3314 88 6D A6 80 */ lbz r3, gInitialized@sda21(r13)
|
||||||
/* 802D63B8 002D3318 7C 08 03 A6 */ mtlr r0
|
/* 802D63B8 002D3318 7C 08 03 A6 */ mtlr r0
|
||||||
/* 802D63BC 002D331C 38 21 00 10 */ addi r1, r1, 0x10
|
/* 802D63BC 002D331C 38 21 00 10 */ addi r1, r1, 0x10
|
||||||
/* 802D63C0 002D3320 4E 80 00 20 */ blr
|
/* 802D63C0 002D3320 4E 80 00 20 */ blr
|
||||||
|
|
|
@ -468,7 +468,7 @@ LIBS = [
|
||||||
"objects": [
|
"objects": [
|
||||||
"Kyoto/Basics/CBasics",
|
"Kyoto/Basics/CBasics",
|
||||||
["Kyoto/Basics/CStopwatch", True],
|
["Kyoto/Basics/CStopwatch", True],
|
||||||
"Kyoto/Basics/CBasicsDolphin",
|
["Kyoto/Basics/CBasicsDolphin", True],
|
||||||
["Kyoto/Alloc/CCallStackDolphin", True],
|
["Kyoto/Alloc/CCallStackDolphin", True],
|
||||||
["Kyoto/Basics/COsContextDolphin", True],
|
["Kyoto/Basics/COsContextDolphin", True],
|
||||||
["Kyoto/Basics/CSWDataDolphin", True],
|
["Kyoto/Basics/CSWDataDolphin", True],
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
namespace CBasics {
|
namespace CBasics {
|
||||||
void Init();
|
bool Init();
|
||||||
char* Stringize(const char* fmt, ...);
|
char* Stringize(const char* fmt, ...);
|
||||||
inline uint SwapBytes(uint x) {
|
inline uint SwapBytes(uint x) {
|
||||||
#if 0
|
#if 0
|
||||||
|
|
|
@ -46,6 +46,8 @@ struct DVDFileInfo {
|
||||||
DVDCallback callback;
|
DVDCallback callback;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void DVDInit();
|
||||||
|
|
||||||
void DVDSetAutoFatalMessaging(BOOL);
|
void DVDSetAutoFatalMessaging(BOOL);
|
||||||
void DVDReset();
|
void DVDReset();
|
||||||
|
|
||||||
|
|
|
@ -154,6 +154,7 @@ void OSFatal(GXColor fg, GXColor bg, const char* msg);
|
||||||
#include <dolphin/os/OSContext.h>
|
#include <dolphin/os/OSContext.h>
|
||||||
#include <dolphin/os/OSError.h>
|
#include <dolphin/os/OSError.h>
|
||||||
#include <dolphin/os/OSException.h>
|
#include <dolphin/os/OSException.h>
|
||||||
|
#include <dolphin/os/OSFastCast.h>
|
||||||
#include <dolphin/os/OSFont.h>
|
#include <dolphin/os/OSFont.h>
|
||||||
#include <dolphin/os/OSInterrupt.h>
|
#include <dolphin/os/OSInterrupt.h>
|
||||||
#include <dolphin/os/OSMutex.h>
|
#include <dolphin/os/OSMutex.h>
|
||||||
|
|
|
@ -5,9 +5,57 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define OS_GQR_F32 0x0000
|
||||||
|
#define OS_GQR_U8 0x0004
|
||||||
|
#define OS_GQR_U16 0x0005
|
||||||
|
#define OS_GQR_S8 0x0006
|
||||||
|
#define OS_GQR_S16 0x0007
|
||||||
|
|
||||||
#define OS_FASTCAST_U8 2
|
#define OS_FASTCAST_U8 2
|
||||||
#define OS_FASTCAST_U16 3
|
#define OS_FASTCAST_U16 3
|
||||||
#define OS_FASTCAST_S16 5
|
#define OS_FASTCAST_S16 5
|
||||||
|
// clang-format off
|
||||||
|
static inline void OSInitFastCast(void) {
|
||||||
|
#ifdef __MWERKS__
|
||||||
|
asm
|
||||||
|
{
|
||||||
|
li r3, OS_GQR_U8
|
||||||
|
oris r3, r3, OS_GQR_U8
|
||||||
|
mtspr GQR2, r3
|
||||||
|
|
||||||
|
li r3, OS_GQR_U16
|
||||||
|
oris r3, r3, OS_GQR_U16
|
||||||
|
mtspr GQR3, r3
|
||||||
|
|
||||||
|
li r3, OS_GQR_S8
|
||||||
|
oris r3, r3, OS_GQR_S8
|
||||||
|
mtspr GQR4, r3
|
||||||
|
|
||||||
|
li r3, OS_GQR_S16
|
||||||
|
oris r3, r3, OS_GQR_S16
|
||||||
|
mtspr GQR5, r3
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
asm volatile ("
|
||||||
|
li 3, 0x0004
|
||||||
|
oris 3, 3, 0x0004
|
||||||
|
mtspr GQR2, 3
|
||||||
|
|
||||||
|
li 3, 0x0005
|
||||||
|
oris 3, 3, 0x0005
|
||||||
|
mtspr GQR3, 3
|
||||||
|
|
||||||
|
li 3, 0x0006
|
||||||
|
oris 3, 3, 0x0006
|
||||||
|
mtspr GQR4, 3
|
||||||
|
|
||||||
|
li 3, 0x0007
|
||||||
|
oris 3, 3, 0x0007
|
||||||
|
mtspr GQR5, 3
|
||||||
|
" : : : "r3" );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
// clang-format off
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
#include "Kyoto/Basics/CBasics.hpp"
|
||||||
|
|
||||||
|
#include "Kyoto/Basics/CStopwatch.hpp"
|
||||||
|
|
||||||
|
#include "dolphin/os.h"
|
||||||
|
#include "dolphin/dvd.h"
|
||||||
|
|
||||||
|
static bool gInitialized = false;
|
||||||
|
bool CBasics::Init() {
|
||||||
|
if (!gInitialized) {
|
||||||
|
OSInit();
|
||||||
|
OSInitFastCast();
|
||||||
|
DVDInit();
|
||||||
|
|
||||||
|
CStopwatch::InitGlobalTimer();
|
||||||
|
gInitialized = true;
|
||||||
|
}
|
||||||
|
return gInitialized;
|
||||||
|
}
|
Loading…
Reference in New Issue