mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-11 23:54:09 +02:00
#370 fix 3DO build
This commit is contained in:
@@ -42,7 +42,11 @@ EWRAM_DATA ExtraInfoLara playersExtra[MAX_PLAYERS];
|
||||
#define LEVEL_INFO(name, title, track, secrets) { #name, NULL, title, track, secrets }
|
||||
#endif
|
||||
|
||||
#ifdef __3DO__ // TODO fix the title scren on 3DO
|
||||
EWRAM_DATA LevelID gLevelID = LVL_TR1_1;
|
||||
#else
|
||||
EWRAM_DATA LevelID gLevelID = LVL_TR1_TITLE;
|
||||
#endif
|
||||
|
||||
const LevelInfo gLevelInfo[LVL_MAX] = {
|
||||
// TR1
|
||||
|
@@ -89,7 +89,7 @@ $index.skip
|
||||
MEND
|
||||
|
||||
boxIsVisible_asm
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr m, [m]
|
||||
ldr bz, [m, #(11 * 4)]
|
||||
add bz, bz, #VIEW_OFF_F
|
||||
|
@@ -1,11 +1,11 @@
|
||||
IMPORT matrixPtr
|
||||
IMPORT gMatrixPtr
|
||||
IMPORT viewportRel
|
||||
IMPORT gVertices
|
||||
IMPORT gFacesBase
|
||||
IMPORT gOT
|
||||
IMPORT gPalette
|
||||
IMPORT gShadowQuads
|
||||
IMPORT cameraViewPos
|
||||
IMPORT gCameraViewPos
|
||||
IMPORT shadeTable
|
||||
IMPORT divTable
|
||||
IMPORT gSinCosTable
|
||||
|
@@ -1,4 +1,5 @@
|
||||
const void* TRACKS_IMA;
|
||||
const void* TITLE_SCR; // TODO
|
||||
|
||||
void* RAM_LVL;
|
||||
void* RAM_TEX;
|
||||
@@ -7,8 +8,6 @@ void* RAM_SND;
|
||||
|
||||
#include "game.h"
|
||||
|
||||
Game game;
|
||||
|
||||
Item irqVBL;
|
||||
Item irqVRAM;
|
||||
Item irqTimer;
|
||||
@@ -124,16 +123,36 @@ void osSetPalette(const uint16* palette)
|
||||
//
|
||||
}
|
||||
|
||||
void osSetGamma(int32 value)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
int32 osGetSystemTimeMS()
|
||||
{
|
||||
return GetMSecTime(irqTimer);
|
||||
}
|
||||
|
||||
bool osSaveSettings()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool osLoadSettings()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool osCheckSave()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool osSaveGame()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool osLoadGame()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void osJoyVibrate(int32 index, int32 L, int32 R)
|
||||
{
|
||||
//
|
||||
@@ -289,7 +308,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
sndInit();
|
||||
|
||||
game.init(gLevelInfo[gLevelID].name);
|
||||
gameInit(gLevelInfo[gLevelID].name);
|
||||
|
||||
AvailMem(&memInfoVRAM, MEMTYPE_DRAM);
|
||||
printf("DRAM: %d\n", memInfoVRAM.minfo_SysFree);
|
||||
@@ -305,8 +324,6 @@ int main(int argc, char *argv[])
|
||||
WaitVBL(irqVBL, 1);
|
||||
clearFast(screenPage);
|
||||
|
||||
uint32 oldKeys = keys;
|
||||
|
||||
updateInput();
|
||||
|
||||
//GetVBLTime(irqVBL, NULL, &frame); // slower
|
||||
@@ -325,18 +342,8 @@ int main(int argc, char *argv[])
|
||||
|
||||
frame /= 2; // 30 Hz
|
||||
|
||||
if ((keys & IK_SELECT) && !(oldKeys & IK_SELECT))
|
||||
{
|
||||
nextLevel();
|
||||
}
|
||||
|
||||
if ((keys & IK_A) && (keys & IK_C)) // respawn
|
||||
{
|
||||
players[0]->restore();
|
||||
}
|
||||
|
||||
int32 updateTime = osGetSystemTimeMS();
|
||||
game.update(frame - lastFrame);
|
||||
gameUpdate(frame - lastFrame);
|
||||
updateTime = osGetSystemTimeMS() - updateTime;
|
||||
|
||||
lastFrame = frame;
|
||||
@@ -344,12 +351,11 @@ updateTime = osGetSystemTimeMS() - updateTime;
|
||||
screenItem = screen.sc_ScreenItems[screenPage];
|
||||
|
||||
int32 renderTime = osGetSystemTimeMS();
|
||||
game.render();
|
||||
gameRender();
|
||||
renderTime = osGetSystemTimeMS() - renderTime;
|
||||
|
||||
drawInt(FRAME_WIDTH - 8, 4, fps);
|
||||
drawInt(FRAME_WIDTH - 8, 4 + 8, updateTime);
|
||||
drawInt(FRAME_WIDTH - 8, 4 + 16, renderTime);
|
||||
drawInt(FRAME_WIDTH - 8, 4 + 16, updateTime);
|
||||
drawInt(FRAME_WIDTH - 8, 4 + 24, renderTime);
|
||||
|
||||
DisplayScreen(screen.sc_Screens[screenPage], NULL);
|
||||
screenPage ^= 1;
|
||||
|
@@ -89,7 +89,7 @@ divLUT RN m0
|
||||
|
||||
matrixLerp_asm
|
||||
stmfd sp!, {r4-r7, lr}
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr m, [m]
|
||||
check_2
|
||||
cmp pdiv, #2
|
||||
|
@@ -15,7 +15,7 @@ dst RN lr
|
||||
|
||||
matrixPush_asm
|
||||
stmfd sp!, {lr}
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr src, [m]
|
||||
add dst, src, #(12 * 4)
|
||||
str dst, [m]
|
||||
|
@@ -51,7 +51,7 @@ matrixRotateX_asm
|
||||
|
||||
sincos angle, s, c
|
||||
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr m, [m]
|
||||
add m, m, #(3 * 4)
|
||||
|
||||
@@ -74,7 +74,7 @@ matrixRotateY_asm
|
||||
|
||||
sincos angle, s, c
|
||||
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr m, [m]
|
||||
|
||||
ldmia m!, {ex0, ex1, ex2}
|
||||
@@ -100,7 +100,7 @@ matrixRotateZ_asm
|
||||
|
||||
sincos angle, s, c
|
||||
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr m, [m]
|
||||
|
||||
ldmia m, {ex0, ex1, ex2, ey0, ey1, ey2}
|
||||
@@ -150,7 +150,7 @@ matrixRotateYXZ_asm
|
||||
|
||||
stmfd sp!, {r4-r11, lr}
|
||||
|
||||
ldr mm, =matrixPtr
|
||||
ldr mm, =gMatrixPtr
|
||||
ldr mm, [mm]
|
||||
ldmia mm, {e00, e10, e20, e01, e11, e21, e02, e12, e22}
|
||||
|
||||
@@ -181,7 +181,7 @@ _rotZ cmp angleZ, #0
|
||||
rotxy e11, e10, sinZ, cosZ, tmp
|
||||
rotxy e21, e20, sinZ, cosZ, tmp
|
||||
|
||||
_done ldr mm, =matrixPtr
|
||||
_done ldr mm, =gMatrixPtr
|
||||
ldr mm, [mm]
|
||||
stmia mm, {e00, e10, e20, e01, e11, e21, e02, e12, e22}
|
||||
ldmfd sp!, {r4-r11, pc}
|
||||
@@ -204,7 +204,7 @@ matrixRotateYQ_asm
|
||||
|
||||
stmfd sp!, {r4-r5, lr}
|
||||
|
||||
ldr mx, =matrixPtr
|
||||
ldr mx, =gMatrixPtr
|
||||
ldr mx, [mx]
|
||||
add my, mx, #(6 * 4)
|
||||
|
||||
|
@@ -12,7 +12,7 @@ e3 RN r3
|
||||
m RN r12
|
||||
|
||||
matrixSetIdentity_asm
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr m, [m]
|
||||
mov e0, #0x4000
|
||||
mov e1, #0
|
||||
|
@@ -21,7 +21,7 @@ dz RN lr
|
||||
matrixTranslateRel_asm
|
||||
stmfd sp!, {r4-r7, lr}
|
||||
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr m, [m]
|
||||
add m, m, #(12 * 4)
|
||||
|
||||
@@ -51,13 +51,13 @@ matrixTranslateRel_asm
|
||||
matrixTranslateAbs_asm
|
||||
stmfd sp!, {r4-r7, lr}
|
||||
|
||||
ldr m, =cameraViewPos
|
||||
ldr m, =gCameraViewPos
|
||||
ldmia m, {e0, e1, e2}
|
||||
sub x, x, e0
|
||||
sub y, y, e1
|
||||
sub z, z, e2
|
||||
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr m, [m]
|
||||
|
||||
ldmia m!, {e0, e1, e2}
|
||||
@@ -83,7 +83,7 @@ matrixTranslateAbs_asm
|
||||
matrixTranslateSet_asm
|
||||
stmfd sp!, {r4-r7, lr}
|
||||
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr m, [m]
|
||||
|
||||
ldmia m!, {e0, e1, e2}
|
||||
|
@@ -26,7 +26,7 @@ divLUT RN lr
|
||||
projectVertices_asm
|
||||
stmfd sp!, {r4-r11, lr}
|
||||
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr m, [m]
|
||||
ldr vertex, =gVertices
|
||||
mov r3, vCount
|
||||
|
@@ -722,7 +722,7 @@ int32 boxIsVisible_c(const AABBs* box)
|
||||
y = mm[dx][1] + mm[dy][1] + mm[dz][1];\
|
||||
z = mm[dx][2] + mm[dy][2] + mm[dz][2];\
|
||||
if (z >= VIEW_MIN_F && z <= VIEW_MAX_F) {\
|
||||
z = divTable[z >> (FIXED_SHIFT + PROJ_SHIFT)];\
|
||||
z = gDivTable[z >> (FIXED_SHIFT + PROJ_SHIFT)];\
|
||||
x = x * z;\
|
||||
y = y * z;\
|
||||
if (x < rMinX) rMinX = x;\
|
||||
@@ -927,9 +927,9 @@ void renderSprite(int32 vx, int32 vy, int32 vz, int32 vg, int32 index)
|
||||
|
||||
const Matrix &m = matrixGet();
|
||||
|
||||
vx -= cameraViewPos.x;
|
||||
vy -= cameraViewPos.y;
|
||||
vz -= cameraViewPos.z;
|
||||
vx -= gCameraViewPos.x;
|
||||
vy -= gCameraViewPos.y;
|
||||
vz -= gCameraViewPos.z;
|
||||
|
||||
int32 z = DP33(m.e20, m.e21, m.e22, vx, vy, vz);
|
||||
|
||||
@@ -1168,3 +1168,25 @@ void renderMesh(const Mesh* mesh)
|
||||
transformMesh(vertices, vCount);
|
||||
faceAddMesh(rFaces, crFaces, tFaces, ctFaces, mesh->rCount, mesh->crCount, mesh->tCount, mesh->ctCount, mesh->intensity);
|
||||
}
|
||||
|
||||
void renderBorder(int32 x, int32 y, int32 width, int32 height, int32 shade, int32 color1, int32 color2, int32 z)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
#define BAR_HEIGHT 5
|
||||
|
||||
void renderBar(int32 x, int32 y, int32 width, int32 value, BarType type)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void renderBackground(const void* background)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
void* copyBackground()
|
||||
{
|
||||
return NULL; // TODO
|
||||
}
|
||||
|
@@ -30,7 +30,7 @@ rMaxY RN y
|
||||
sphereIsVisible_asm
|
||||
stmfd sp!, {r4-r8, lr}
|
||||
|
||||
ldr m, =matrixPtr
|
||||
ldr m, =gMatrixPtr
|
||||
ldr m, [m]
|
||||
|
||||
ldmia m!, {mx, my, mz}
|
||||
|
@@ -4656,7 +4656,7 @@ struct LevelPC
|
||||
#define COLOR_THRESHOLD_SQ (8 * 8)
|
||||
|
||||
const char* levelNames[] = {
|
||||
#if 0
|
||||
#if 1
|
||||
"TITLE",
|
||||
"GYM",
|
||||
"LEVEL1",
|
||||
@@ -5708,9 +5708,9 @@ int main()
|
||||
sprintf(path, "levels/%s.PHD", levelNames[i]);
|
||||
levels[i] = new LevelPC(path);
|
||||
|
||||
if (strcmp(levelNames[i], "TITLE") == 0) {
|
||||
convertScreen("TITLE", levels[i]->palette);
|
||||
}
|
||||
//if (strcmp(levelNames[i], "TITLE") == 0) {
|
||||
// convertScreen("TITLE", levels[i]->palette);
|
||||
//}
|
||||
|
||||
for (int32 j = 0; j < 256; j++)
|
||||
{
|
||||
|
Reference in New Issue
Block a user