mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-07 05:14:58 -04:00
d_a_movie_player 99% (#1003)
* d_a_movie_player 99% * Fix version differences
This commit is contained in:
@@ -3,6 +3,13 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
enum JASMixMode {
|
||||
/* 0x0 */ MIX_MODE_MONO,
|
||||
/* 0x1 */ MIX_MODE_MONO_WIDE,
|
||||
/* 0x2 */ MIX_MODE_EXTRA,
|
||||
/* 0x3 */ MIX_MODE_INTERLEAVE,
|
||||
};
|
||||
|
||||
namespace JASystem {
|
||||
namespace Kernel {
|
||||
void init();
|
||||
|
||||
@@ -27,13 +27,13 @@ public:
|
||||
static void postRetraceProc(u32);
|
||||
static void drawDoneCallback();
|
||||
|
||||
u16 getFbWidth() const { return mRenderObj->fb_width; }
|
||||
u16 getEfbHeight() const { return mRenderObj->efb_height; }
|
||||
u16 getFbWidth() const { return mRenderObj->fbWidth; }
|
||||
u16 getEfbHeight() const { return mRenderObj->efbHeight; }
|
||||
void getBounds(u16& width, u16& height) const {
|
||||
width = (u16)getFbWidth();
|
||||
height = (u16)getEfbHeight();
|
||||
}
|
||||
u32 getXfbHeight() const { return mRenderObj->xfb_height & 0xFFFF; }
|
||||
u32 getXfbHeight() const { return mRenderObj->xfbHeight & 0xFFFF; }
|
||||
u32 isAntiAliasing() const { return mRenderObj->antialiasing; }
|
||||
Pattern getSamplePattern() const { return mRenderObj->sample_pattern; }
|
||||
u8* getVFilter() const { return mRenderObj->vfilter; }
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef D_A_MOVIE_PLAYER_H
|
||||
#define D_A_MOVIE_PLAYER_H
|
||||
|
||||
#include "dolphin/thp.h"
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "d/d_drawlist.h"
|
||||
#include "dolphin/dvd/dvd.h"
|
||||
@@ -13,61 +14,6 @@ typedef u8 THPSample;
|
||||
typedef s16 THPCoeff;
|
||||
typedef f32 THPQuantTab[64];
|
||||
|
||||
typedef struct _THPHuffmanTab {
|
||||
u8 quick[32];
|
||||
u8 increment[32];
|
||||
u8* Vij;
|
||||
s32 maxCode[18];
|
||||
s32 valPtr[18];
|
||||
u8 Vij1;
|
||||
u8 pad[11];
|
||||
} THPHuffmanTab;
|
||||
|
||||
typedef struct _THPComponent {
|
||||
u8 quantizationTableSelector;
|
||||
u8 DCTableSelector;
|
||||
u8 ACTableSelector;
|
||||
THPCoeff predDC;
|
||||
} THPComponent;
|
||||
|
||||
typedef struct _THPFileInfo {
|
||||
THPQuantTab quantTabs[3];
|
||||
THPHuffmanTab huffmanTabs[4];
|
||||
THPComponent components[3];
|
||||
u16 xPixelSize;
|
||||
u16 yPixelSize;
|
||||
u16 MCUsPerRow;
|
||||
u16 decompressedY;
|
||||
u8* c;
|
||||
u32 currByte;
|
||||
u32 cnt;
|
||||
u8 validHuffmanTabs;
|
||||
u8 RST;
|
||||
u16 nMCU;
|
||||
u16 currMCU;
|
||||
u8* dLC[3];
|
||||
} THPFileInfo;
|
||||
|
||||
typedef struct THPAudioRecordHeader {
|
||||
u32 offsetNextChannel;
|
||||
u32 sampleSize;
|
||||
s16 lCoef[8][2];
|
||||
s16 rCoef[8][2];
|
||||
s16 lYn1;
|
||||
s16 lYn2;
|
||||
s16 rYn1;
|
||||
s16 rYn2;
|
||||
} THPAudioRecordHeader;
|
||||
|
||||
typedef struct THPAudioDecodeInfo {
|
||||
u8* encodeData;
|
||||
u32 offsetNibbles;
|
||||
u8 predictor;
|
||||
u8 scale;
|
||||
s16 yn1;
|
||||
s16 yn2;
|
||||
} THPAudioDecodeInfo;
|
||||
|
||||
static u32 THPAudioDecode(s16* audioBuffer, u8* audioFrame, s32 flag);
|
||||
static s32 __THPAudioGetNewSample(THPAudioDecodeInfo* info);
|
||||
static void __THPAudioInitialize(THPAudioDecodeInfo* info, u8* ptr);
|
||||
@@ -116,8 +62,11 @@ public:
|
||||
static BOOL daMP_c_Callback_Draw(daMP_c*);
|
||||
|
||||
public:
|
||||
/* 0x290 */ u32 (*mpCallBack1)();
|
||||
/* 0x294 */ u32 (*mpCallBack2)(f32);
|
||||
/* 0x290 */ u32 (*mpGetMovieRestFrame)();
|
||||
/* 0x294 */ u32 (*mpSetPercentMovieVol)(f32);
|
||||
#if VERSION == VERSION_PAL
|
||||
/* 0x29C */ u32 (*mpTHPGetTotalFrame)(void);
|
||||
#endif
|
||||
};
|
||||
|
||||
class daMP_Dlst_base_c : public dDlst_base_c {
|
||||
@@ -125,38 +74,47 @@ class daMP_Dlst_base_c : public dDlst_base_c {
|
||||
};
|
||||
|
||||
struct daMP_THPReadBuffer {
|
||||
/* 0x00 */ void* m00;
|
||||
/* 0x04 */ s32 m04;
|
||||
/* 0x00 */ u8* ptr;
|
||||
/* 0x04 */ s32 frameNumber;
|
||||
/* 0x08 */ BOOL isValid;
|
||||
};
|
||||
|
||||
struct daMP_Player_c { // Fake name
|
||||
/* 0x00 */ DVDFileInfo mFileInfo;
|
||||
/* 0x3C */ u8 m3C[0x50 - 0x3C];
|
||||
/* 0x50 */ u32 m50;
|
||||
/* 0x54 */ u8 m54[0x64 - 0x54];
|
||||
/* 0x64 */ s32 m64;
|
||||
/* 0x68 */ u8 m68[0xA6 - 0x68];
|
||||
/* 0xA6 */ u8 mA6;
|
||||
/* 0xA7 */ u8 mA7[0xA8 - 0xA7];
|
||||
/* 0xA8 */ s32 mA8;
|
||||
/* 0xAC */ u8 mAC[0xB8 - 0xAC];
|
||||
/* 0xB8 */ s32 mB8;
|
||||
/* 0xBC */ s32 mBC;
|
||||
/* 0xC0 */ s32 mC0;
|
||||
/* 0x000 */ DVDFileInfo fileInfo;
|
||||
/* 0x03C */ THPHeader header;
|
||||
/* 0x06C */ THPFrameCompInfo compInfo;
|
||||
/* 0x080 */ THPVideoInfo videoInfo;
|
||||
/* 0x08C */ THPAudioInfo audioInfo;
|
||||
/* 0x09C */ void* thpWork;
|
||||
/* 0x0A0 */ BOOL open;
|
||||
/* 0x0A4 */ u8 state;
|
||||
/* 0x0A5 */ u8 internalState;
|
||||
/* 0x0A6 */ u8 playFlag;
|
||||
/* 0x0A7 */ u8 audioExist;
|
||||
/* 0x0A8 */ s32 dvdError;
|
||||
/* 0x0AC */ s32 videoError;
|
||||
/* 0x0B0 */ BOOL onMemory;
|
||||
/* 0x0B4 */ u8* movieData;
|
||||
/* 0x0B8 */ s32 initOffset;
|
||||
/* 0x0BC */ s32 initReadSize;
|
||||
/* 0x0C0 */ s32 initReadFrame;
|
||||
/* 0x0C4 */ u32 curField;
|
||||
/* 0x0C8 */ s64 retaceCount;
|
||||
/* 0x0D0 */ s32 prevCount;
|
||||
/* 0x0D4 */ s32 curCount;
|
||||
/* 0x0D8 */ s32 videoDecodeCount;
|
||||
/* 0x0DC */ f32 curVolume;
|
||||
/* 0x0E0 */ f32 targetVolume;
|
||||
/* 0x0E4 */ f32 deltaVolume;
|
||||
/* 0x0E8 */ s32 rampCount;
|
||||
/* 0x0EC */ s32 curAudioTrack;
|
||||
/* 0x0F0 */ s32 curVideoNumber;
|
||||
/* 0x0F4 */ s32 curAudioNumber;
|
||||
/* 0x0F8 */ THPTextureSet* dispTextureSet;
|
||||
/* 0x0FC */ THPAudioBuffer* playAudioBuffer;
|
||||
/* 0x100 */ daMP_THPReadBuffer readBuffer[10];
|
||||
/* 0x000 */ THPTextureSet textureSet[THP_TEXTURE_SET_COUNT];
|
||||
/* 0x000 */ THPAudioBuffer audioBuffer[THP_AUDIO_BUFFER_COUNT];
|
||||
};
|
||||
|
||||
struct THPVideoInfo {
|
||||
/* 0x00 */ u8 m00[0x0C - 0x00];
|
||||
};
|
||||
|
||||
struct THPAudioInfo {
|
||||
/* 0x00 */ u8 m00[0x10 - 0x00];
|
||||
};
|
||||
|
||||
inline s32 daMP_NEXT_READ_SIZE(daMP_THPReadBuffer* readBuf) {
|
||||
return *(s32*)readBuf->m00;
|
||||
}
|
||||
|
||||
void daMP_PrepareReady(int);
|
||||
|
||||
#endif /* D_A_MOVIE_PLAYER_H */
|
||||
|
||||
@@ -391,8 +391,8 @@ typedef enum _GXTexFmt {
|
||||
|
||||
typedef enum _GXGamma {
|
||||
/* 0x0 */ GX_GM_1_0,
|
||||
/* 0x0 */ GX_GM_1_7,
|
||||
/* 0x0 */ GX_GM_2_2,
|
||||
/* 0x1 */ GX_GM_1_7,
|
||||
/* 0x2 */ GX_GM_2_2,
|
||||
} GXGamma;
|
||||
|
||||
typedef enum _GXTlutFmt {
|
||||
|
||||
@@ -19,15 +19,15 @@ typedef struct _GXColorS10 {
|
||||
} GXColorS10;
|
||||
|
||||
typedef struct _GXRenderModeObj {
|
||||
/* 0x00 */ s32 vi_tv_mode;
|
||||
/* 0x04 */ u16 fb_width;
|
||||
/* 0x06 */ u16 efb_height;
|
||||
/* 0x08 */ u16 xfb_height;
|
||||
/* 0x0A */ u16 vi_x_origin;
|
||||
/* 0x0C */ u16 vi_y_origin;
|
||||
/* 0x0E */ u16 vi_width;
|
||||
/* 0x10 */ u16 vi_height;
|
||||
/* 0x14 */ s32 xfb_mode;
|
||||
/* 0x00 */ VITVMode viTVmode;
|
||||
/* 0x04 */ u16 fbWidth;
|
||||
/* 0x06 */ u16 efbHeight;
|
||||
/* 0x08 */ u16 xfbHeight;
|
||||
/* 0x0A */ u16 viXOrigin;
|
||||
/* 0x0C */ u16 viYOrigin;
|
||||
/* 0x0E */ u16 viWidth;
|
||||
/* 0x10 */ u16 viHeight;
|
||||
/* 0x14 */ VIXFBMode xFBmode;
|
||||
/* 0x18 */ u8 field_rendering;
|
||||
/* 0x19 */ u8 antialiasing;
|
||||
/* 0x1A */ u8 sample_pattern[12][2];
|
||||
|
||||
@@ -94,8 +94,7 @@ void __OSPromoteThread(OSThread* thread, s32 priority);
|
||||
static OSThread* SelectThread(BOOL yield);
|
||||
void __OSReschedule(void);
|
||||
void OSYieldThread(void);
|
||||
BOOL OSCreateThread(OSThread* thread, void* func, void* param, void* stackBase, u32 stackSize,
|
||||
OSPriority priority, u16 attribute);
|
||||
BOOL OSCreateThread(OSThread* thread, void* func, void* param, void* stack, u32 stackSize, OSPriority priority, u16 attr);
|
||||
void OSExitThread(void* exitValue);
|
||||
void OSCancelThread(OSThread* thread);
|
||||
void OSDetachThread(OSThread* thread);
|
||||
|
||||
@@ -0,0 +1,154 @@
|
||||
#ifndef _DOLPHIN_THP_H_
|
||||
#define _DOLPHIN_THP_H_
|
||||
|
||||
#include <dolphin/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef u8 THPSample;
|
||||
typedef s16 THPCoeff;
|
||||
typedef f32 THPQuantTab[64];
|
||||
|
||||
typedef struct _THPHuffmanTab {
|
||||
u8 quick[32];
|
||||
u8 increment[32];
|
||||
u8* Vij;
|
||||
s32 maxCode[18];
|
||||
s32 valPtr[18];
|
||||
u8 Vij1;
|
||||
u8 pad[11];
|
||||
} THPHuffmanTab;
|
||||
|
||||
typedef struct _THPComponent {
|
||||
u8 quantizationTableSelector;
|
||||
u8 DCTableSelector;
|
||||
u8 ACTableSelector;
|
||||
THPCoeff predDC;
|
||||
} THPComponent;
|
||||
|
||||
typedef struct _THPFileInfo {
|
||||
THPQuantTab quantTabs[3];
|
||||
THPHuffmanTab huffmanTabs[4];
|
||||
THPComponent components[3];
|
||||
u16 xPixelSize;
|
||||
u16 yPixelSize;
|
||||
u16 MCUsPerRow;
|
||||
u16 decompressedY;
|
||||
u8* c;
|
||||
u32 currByte;
|
||||
u32 cnt;
|
||||
u8 validHuffmanTabs;
|
||||
u8 RST;
|
||||
u16 nMCU;
|
||||
u16 currMCU;
|
||||
u8* dLC[3];
|
||||
} THPFileInfo;
|
||||
|
||||
typedef struct THPAudioRecordHeader {
|
||||
u32 offsetNextChannel;
|
||||
u32 sampleSize;
|
||||
s16 lCoef[8][2];
|
||||
s16 rCoef[8][2];
|
||||
s16 lYn1;
|
||||
s16 lYn2;
|
||||
s16 rYn1;
|
||||
s16 rYn2;
|
||||
} THPAudioRecordHeader;
|
||||
|
||||
typedef struct THPAudioDecodeInfo {
|
||||
u8* encodeData;
|
||||
u32 offsetNibbles;
|
||||
u8 predictor;
|
||||
u8 scale;
|
||||
s16 yn1;
|
||||
s16 yn2;
|
||||
} THPAudioDecodeInfo;
|
||||
|
||||
typedef struct THPTextureSet {
|
||||
u8* ytexture;
|
||||
u8* utexture;
|
||||
u8* vtexture;
|
||||
s32 frameNumber;
|
||||
} THPTextureSet;
|
||||
|
||||
typedef struct THPAudioBuffer {
|
||||
s16* buffer;
|
||||
s16* curPtr;
|
||||
u32 validSample;
|
||||
} THPAudioBuffer;
|
||||
|
||||
typedef struct THPVideoInfo {
|
||||
u32 xSize;
|
||||
u32 ySize;
|
||||
u32 videoType;
|
||||
} THPVideoInfo;
|
||||
|
||||
typedef struct THPAudioInfo {
|
||||
u32 sndChannels;
|
||||
u32 sndFrequency;
|
||||
u32 sndNumSamples;
|
||||
u32 sndNumTracks;
|
||||
} THPAudioInfo;
|
||||
|
||||
typedef struct THPFrameCompInfo {
|
||||
u32 numComponents;
|
||||
u8 frameComp[16];
|
||||
} THPFrameCompInfo;
|
||||
|
||||
typedef struct THPHeader {
|
||||
/* 0x00 */ char magic[4];
|
||||
/* 0x04 */ u32 version;
|
||||
/* 0x08 */ u32 bufsize;
|
||||
/* 0x0C */ u32 audioMaxSamples;
|
||||
/* 0x10 */ f32 frameRate;
|
||||
/* 0x14 */ u32 numFrames;
|
||||
/* 0x18 */ u32 firstFrameSize;
|
||||
/* 0x1C */ u32 movieDataSize;
|
||||
/* 0x20 */ u32 compInfoDataOffsets;
|
||||
/* 0x24 */ u32 offsetDataOffsets;
|
||||
/* 0x28 */ u32 movieDataOffsets;
|
||||
/* 0x2C */ u32 finalFrameDataOffsets;
|
||||
} THPHeader;
|
||||
|
||||
#define THP_AUDIO_BUFFER_COUNT 3
|
||||
#define THP_READ_BUFFER_COUNT 10
|
||||
#define THP_TEXTURE_SET_COUNT 3
|
||||
|
||||
static u32 THPAudioDecode(s16* audioBuffer, u8* audioFrame, s32 flag);
|
||||
static s32 __THPAudioGetNewSample(THPAudioDecodeInfo* info);
|
||||
static void __THPAudioInitialize(THPAudioDecodeInfo* info, u8* ptr);
|
||||
|
||||
s32 __THPAudioGetNewSample(THPAudioDecodeInfo*);
|
||||
void __THPAudioInitialize(THPAudioDecodeInfo*, u8*);
|
||||
|
||||
static void __THPSetupBuffers(void);
|
||||
static u8 __THPReadFrameHeader(void);
|
||||
static u8 __THPReadScaneHeader(void);
|
||||
static u8 __THPReadQuantizationTable(void);
|
||||
static u8 __THPReadHuffmanTableSpecification(void);
|
||||
static void __THPHuffGenerateSizeTable(void);
|
||||
static void __THPHuffGenerateCodeTable(void);
|
||||
static void __THPHuffGenerateDecoderTables(u8 tabIndex);
|
||||
static void __THPRestartDefinition(void);
|
||||
static void __THPPrepBitStream(void);
|
||||
static void __THPDecompressYUV(void* tileY, void* tileU, void* tileV);
|
||||
static void __THPGQRRestore(void);
|
||||
static void __THPDecompressiMCURow512x448(void);
|
||||
static void __THPDecompressiMCURow640x480(void);
|
||||
static void __THPDecompressiMCURowNxN(void);
|
||||
static void __THPInverseDCTNoYPos(THPCoeff* in, u32 xPos);
|
||||
static void __THPHuffDecodeDCTCompY(THPFileInfo* info, THPCoeff* block);
|
||||
static void __THPHuffDecodeDCTCompU(THPFileInfo* info, THPCoeff* block);
|
||||
static void __THPHuffDecodeDCTCompV(THPFileInfo* info, THPCoeff* block);
|
||||
|
||||
static void __THPInverseDCTY8(THPCoeff* in, u32 xPos);
|
||||
static void __THPGQRSetup();
|
||||
static s32 __THPHuffDecodeTab(THPFileInfo* info, THPHuffmanTab* h);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // _DOLPHIN_THP_H_
|
||||
@@ -60,7 +60,10 @@ typedef enum {
|
||||
VI_TVMODE_GCA_PROG = VI_TVMODE(VI_GCA, VI_PROGRESSIVE), // 26
|
||||
} VITVMode;
|
||||
|
||||
typedef enum { VI_XFBMODE_SF = 0, VI_XFBMODE_DF } VIXFBMode;
|
||||
typedef enum {
|
||||
VI_XFBMODE_SF = 0,
|
||||
VI_XFBMODE_DF
|
||||
} VIXFBMode;
|
||||
|
||||
typedef void (*VIRetraceCallback)(u32);
|
||||
typedef void (*VIPositionCallback)(s16 x, s16 y);
|
||||
@@ -138,6 +141,7 @@ void VISetBlack(BOOL);
|
||||
u32 VIGetRetraceCount();
|
||||
u32 VIGetDTVStatus();
|
||||
u32 VIGetTvFormat();
|
||||
u32 VIGetNextField(void);
|
||||
|
||||
vu16 __VIRegs[59] AT_ADDRESS(0xCC002000);
|
||||
|
||||
|
||||
@@ -14,10 +14,10 @@ class mDoMch_render_c {
|
||||
public:
|
||||
static void setRenderModeObj(GXRenderModeObj* obj) { mRenderModeObj = obj; }
|
||||
static void setProgressiveMode() { setRenderModeObj(&g_ntscZeldaProg); }
|
||||
static u16 getEfbHeight() { return getRenderModeObj()->efb_height; }
|
||||
static u16 getFbWidth() { return getRenderModeObj()->fb_width; }
|
||||
static void setFbWidth(s16 v) { getRenderModeObj()->fb_width = v; }
|
||||
static void setEfbHeight(s16 v) { getRenderModeObj()->efb_height = v; }
|
||||
static u16 getEfbHeight() { return getRenderModeObj()->efbHeight; }
|
||||
static u16 getFbWidth() { return getRenderModeObj()->fbWidth; }
|
||||
static void setFbWidth(s16 v) { getRenderModeObj()->fbWidth = v; }
|
||||
static void setEfbHeight(s16 v) { getRenderModeObj()->efbHeight = v; }
|
||||
|
||||
static GXRenderModeObj* getRenderModeObj() { return mRenderModeObj; }
|
||||
|
||||
|
||||
@@ -392,8 +392,8 @@ void JFWDisplay::clearEfb_init() {
|
||||
|
||||
/* 80255F60-80255FA0 .text clearEfb__10JFWDisplayF8_GXColor */
|
||||
void JFWDisplay::clearEfb(GXColor color) {
|
||||
int height = mpRenderMode->efb_height;
|
||||
int width = mpRenderMode->fb_width;
|
||||
int height = mpRenderMode->efbHeight;
|
||||
int width = mpRenderMode->fbWidth;
|
||||
|
||||
clearEfb(0, 0, width, height, color);
|
||||
}
|
||||
@@ -401,8 +401,8 @@ void JFWDisplay::clearEfb(GXColor color) {
|
||||
/* 80255FA0-8025631C .text clearEfb__10JFWDisplayFiiii8_GXColor */
|
||||
void JFWDisplay::clearEfb(int param_0, int param_1, int param_2, int param_3, GXColor color) {
|
||||
Mtx44 mtx;
|
||||
u16 height = mpRenderMode->efb_height;
|
||||
u16 width = mpRenderMode->fb_width;
|
||||
u16 height = mpRenderMode->efbHeight;
|
||||
u16 width = mpRenderMode->fbWidth;
|
||||
|
||||
C_MTXOrtho(mtx, 0.0f, height, 0.0f, width, 0.0f, 1.0f);
|
||||
GXSetProjection(mtx, GX_ORTHOGRAPHIC);
|
||||
|
||||
@@ -88,7 +88,7 @@ void JFWSystem::init() {
|
||||
systemConsoleManager = JUTConsoleManager::createManager(0);
|
||||
systemConsole = JUTConsole::create(0x3C, 200, 0);
|
||||
systemConsole->setFont(systemFont);
|
||||
if(CSetUpParam::renderMode->efb_height < 300) {
|
||||
if(CSetUpParam::renderMode->efbHeight < 300) {
|
||||
systemConsole->setFontSize(systemFont->getWidth() * 0.85f, systemFont->getHeight() * 0.5f);
|
||||
systemConsole->setPosition(20, 25);
|
||||
}
|
||||
|
||||
@@ -789,8 +789,8 @@ void JUTException::waitTime(s32 timeout_ms) {
|
||||
void JUTException::createFB() {
|
||||
GXRenderModeObj* renderMode = &GXNtsc480Int;
|
||||
void* end = (void*)OSGetArenaHi();
|
||||
u16 width = ALIGN_NEXT(renderMode->fb_width, 16);
|
||||
u16 height = renderMode->xfb_height;
|
||||
u16 width = ALIGN_NEXT(renderMode->fbWidth, 16);
|
||||
u16 height = renderMode->xfbHeight;
|
||||
u32 pixel_count = width * height;
|
||||
u32 size = pixel_count * 2;
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@ void JUTProcBar::draw() {
|
||||
void JUTProcBar::drawProcessBar() {
|
||||
if (mVisible) {
|
||||
int frameDuration = 16666; // duration in miliseconds? for how long a frame takes,
|
||||
if (JUTVideo::getManager() && ((JUTVideo::getManager()->getRenderMode()->vi_tv_mode >> 2) & 0x0f) == 1) // possibly a define
|
||||
if (JUTVideo::getManager() && ((JUTVideo::getManager()->getRenderMode()->viTVmode >> 2) & 0x0f) == 1) // possibly a define
|
||||
frameDuration = 20000; // duration for PAL
|
||||
|
||||
static int cnt = 0;
|
||||
|
||||
@@ -83,7 +83,7 @@ void JUTVideo::preRetraceProc(u32 retrace_count) {
|
||||
JUTVideo* videoManager = JUTGetVideoManager();
|
||||
const GXRenderModeObj* renderMode = videoManager->getRenderMode();
|
||||
JUTDirectPrint* directPrint = JUTDirectPrint::getManager();
|
||||
directPrint->changeFrameBuffer(frameBuffer, renderMode->fb_width, renderMode->efb_height);
|
||||
directPrint->changeFrameBuffer(frameBuffer, renderMode->fbWidth, renderMode->efbHeight);
|
||||
}
|
||||
|
||||
if (sManager->mSetBlack == 1) {
|
||||
@@ -181,7 +181,7 @@ void JUTVideo::postRetraceProc(u32 retrace_count) {
|
||||
|
||||
/* 802C815C-802C81D4 .text setRenderMode__8JUTVideoFPC16_GXRenderModeObj */
|
||||
void JUTVideo::setRenderMode(const GXRenderModeObj* pObj) {
|
||||
if (mRenderObj != NULL && pObj->vi_tv_mode != mRenderObj->vi_tv_mode) {
|
||||
if (mRenderObj != NULL && pObj->viTVmode != mRenderObj->viTVmode) {
|
||||
mSetBlack = true;
|
||||
mSetBlackFrameCount = 4;
|
||||
}
|
||||
|
||||
@@ -31,15 +31,15 @@ JUTXfb::JUTXfb(const GXRenderModeObj* pObj, JKRHeap* pHeap, JUTXfb::EXfbNumber x
|
||||
common_init(xfbNum);
|
||||
|
||||
if (pObj) {
|
||||
initiate(pObj->fb_width, pObj->xfb_height, pHeap, xfbNum);
|
||||
initiate(pObj->fbWidth, pObj->xfbHeight, pHeap, xfbNum);
|
||||
} else {
|
||||
#if VERSION <= VERSION_JPN
|
||||
GXRenderModeObj* obj = JUTVideo::getManager()->getRenderMode();
|
||||
initiate(obj->fb_width, obj->xfb_height, pHeap, xfbNum);
|
||||
initiate(obj->fbWidth, obj->xfbHeight, pHeap, xfbNum);
|
||||
#else
|
||||
u16 fb_width = JUTVideo::getManager()->getRenderMode()->fb_width;
|
||||
u16 efb_height = (u32)JUTVideo::getManager()->getRenderMode()->efb_height;
|
||||
u16 xfb_height = JUTVideo::getManager()->getRenderMode()->xfb_height;
|
||||
u16 fb_width = JUTVideo::getManager()->getRenderMode()->fbWidth;
|
||||
u16 efb_height = (u32)JUTVideo::getManager()->getRenderMode()->efbHeight;
|
||||
u16 xfb_height = JUTVideo::getManager()->getRenderMode()->xfbHeight;
|
||||
f32 scale_factor = GXGetYScaleFactor(efb_height, xfb_height);
|
||||
u16 xfb_lines = GXGetNumXfbLines(efb_height, scale_factor);
|
||||
|
||||
|
||||
+1368
-163
File diff suppressed because it is too large
Load Diff
+5
-5
@@ -67,11 +67,11 @@ static BOOL dScnTitle_Execute(title_of_scene_class* i_this) {
|
||||
return TRUE;
|
||||
#endif
|
||||
|
||||
if (movie->mpCallBack1 == NULL || movie->mpCallBack2 == NULL)
|
||||
if (movie->mpGetMovieRestFrame == NULL || movie->mpSetPercentMovieVol == NULL)
|
||||
return TRUE;
|
||||
|
||||
if (fpcM_GetName(i_this) == PROC_ENDING_SCENE) {
|
||||
if (movie->mpCallBack1() == 0) {
|
||||
if (movie->mpGetMovieRestFrame() == 0) {
|
||||
#if VERSION == VERSION_DEMO
|
||||
fopScnM_ChangeReq(i_this, PROC_NAMEEX_SCENE, PROC_OVERLAP0, 5);
|
||||
#else
|
||||
@@ -81,12 +81,12 @@ static BOOL dScnTitle_Execute(title_of_scene_class* i_this) {
|
||||
dComIfG_changeOpeningScene(i_this, PROC_OPENING_SCENE);
|
||||
}
|
||||
#endif
|
||||
movie->mpCallBack2(0.0f);
|
||||
movie->mpSetPercentMovieVol(0.0f);
|
||||
}
|
||||
} else {
|
||||
if (CPad_CHECK_TRIG_A(0) || CPad_CHECK_TRIG_B(0) || CPad_CHECK_TRIG_START(0) || movie->mpCallBack1() == 0) {
|
||||
if (CPad_CHECK_TRIG_A(0) || CPad_CHECK_TRIG_B(0) || CPad_CHECK_TRIG_START(0) || movie->mpGetMovieRestFrame() == 0) {
|
||||
dComIfG_changeOpeningScene(i_this, PROC_OPENING_SCENE);
|
||||
movie->mpCallBack2(0.0f);
|
||||
movie->mpSetPercentMovieVol(0.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -308,7 +308,7 @@ void __GXInitGX(void) {
|
||||
GXLoadTexMtxImm(ident, GX_IDENTITY, GX_MTX3x4);
|
||||
GXLoadTexMtxImm(ident, GX_PTIDENTITY, GX_MTX3x4);
|
||||
|
||||
GXSetViewport(0.0f, 0.0f, renderObj->fb_width, renderObj->xfb_height, 0.0f, 1.0f);
|
||||
GXSetViewport(0.0f, 0.0f, renderObj->fbWidth, renderObj->xfbHeight, 0.0f, 1.0f);
|
||||
|
||||
GXSetProjectionv(GXDefaultProjData);
|
||||
|
||||
@@ -316,7 +316,7 @@ void __GXInitGX(void) {
|
||||
GXSetCullMode(GX_CULL_BACK);
|
||||
GXSetClipMode(GX_CLIP_ENABLE);
|
||||
|
||||
GXSetScissor(0, 0, renderObj->fb_width, renderObj->efb_height);
|
||||
GXSetScissor(0, 0, renderObj->fbWidth, renderObj->efbHeight);
|
||||
GXSetScissorBoxOffset(0, 0);
|
||||
|
||||
GXSetNumChans(0);
|
||||
@@ -399,11 +399,11 @@ void __GXInitGX(void) {
|
||||
GXSetFieldMask(GX_TRUE, GX_TRUE);
|
||||
GXSetFieldMode(
|
||||
(GXBool)renderObj->field_rendering,
|
||||
(GXBool)((renderObj->vi_height == 2 * renderObj->xfb_height) ? GX_TRUE : GX_FALSE));
|
||||
(GXBool)((renderObj->viHeight == 2 * renderObj->xfbHeight) ? GX_TRUE : GX_FALSE));
|
||||
|
||||
GXSetDispCopySrc(0, 0, renderObj->fb_width, renderObj->efb_height);
|
||||
GXSetDispCopyDst(renderObj->fb_width, renderObj->efb_height);
|
||||
GXSetDispCopyYScale((f32)renderObj->xfb_height / (f32)renderObj->efb_height);
|
||||
GXSetDispCopySrc(0, 0, renderObj->fbWidth, renderObj->efbHeight);
|
||||
GXSetDispCopyDst(renderObj->fbWidth, renderObj->efbHeight);
|
||||
GXSetDispCopyYScale((f32)renderObj->xfbHeight / (f32)renderObj->efbHeight);
|
||||
GXSetCopyClamp(GX_CLAMP_BOTH);
|
||||
|
||||
GXSetCopyFilter(renderObj->antialiasing, renderObj->sample_pattern, GX_TRUE,
|
||||
|
||||
@@ -84,7 +84,7 @@ void mDoGph_gInf_c::create() {
|
||||
#endif
|
||||
JFWDisplay::createManager(heap, JUTXfb::Double, true);
|
||||
JFWDisplay::getManager()->setDrawDoneMethod(JFWDisplay::Async);
|
||||
JUTFader* faderPtr = new JUTFader(0, 0, JUTVideo::getManager()->getRenderMode()->fb_width, JUTVideo::getManager()->getRenderMode()->efb_height, JUtility::TColor(0, 0, 0, 0));
|
||||
JUTFader* faderPtr = new JUTFader(0, 0, JUTVideo::getManager()->getRenderMode()->fbWidth, JUTVideo::getManager()->getRenderMode()->efbHeight, JUtility::TColor(0, 0, 0, 0));
|
||||
JUT_ASSERT(DEMO_SELECT(414, 416), faderPtr != NULL);
|
||||
setFader(faderPtr);
|
||||
JFWDisplay::getManager()->setFader(faderPtr);
|
||||
|
||||
@@ -371,7 +371,17 @@ void fault_callback_scroll(OSError, OSContext* p_context, u32, u32) {
|
||||
|
||||
#if VERSION != VERSION_PAL
|
||||
GXRenderModeObj g_ntscZeldaIntDf = {
|
||||
0, 640, 480, 480, 30, 0, 660, 480, 1, 0, 0,
|
||||
VI_TVMODE_NTSC_INT,
|
||||
640,
|
||||
480,
|
||||
480,
|
||||
30,
|
||||
0,
|
||||
660,
|
||||
480,
|
||||
VI_XFBMODE_DF,
|
||||
0,
|
||||
0,
|
||||
{{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
@@ -387,7 +397,17 @@ GXRenderModeObj g_ntscZeldaIntDf = {
|
||||
{8, 8, 10, 12, 10, 8, 8},
|
||||
};
|
||||
GXRenderModeObj g_ntscZeldaProg = {
|
||||
2, 640, 480, 480, 30, 0, 660, 480, 0, 0, 0,
|
||||
VI_TVMODE_NTSC_PROG,
|
||||
640,
|
||||
480,
|
||||
480,
|
||||
30,
|
||||
0,
|
||||
660,
|
||||
480,
|
||||
VI_XFBMODE_SF,
|
||||
0,
|
||||
0,
|
||||
{{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
@@ -404,7 +424,17 @@ GXRenderModeObj g_ntscZeldaProg = {
|
||||
};
|
||||
#else
|
||||
GXRenderModeObj g_ntscZeldaIntDf = {
|
||||
4, 640, 480, 534, 30, 20, 660, 534, 1, 0, 0,
|
||||
VI_TVMODE_PAL_INT,
|
||||
640,
|
||||
480,
|
||||
534,
|
||||
30,
|
||||
20,
|
||||
660,
|
||||
534,
|
||||
VI_XFBMODE_DF,
|
||||
0,
|
||||
0,
|
||||
{{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
@@ -420,7 +450,17 @@ GXRenderModeObj g_ntscZeldaIntDf = {
|
||||
{8, 8, 10, 12, 10, 8, 8},
|
||||
};
|
||||
GXRenderModeObj g_ntscZeldaProg = {
|
||||
20, 640, 480, 480, 30, 0, 660, 480, 1, 0, 0,
|
||||
VI_TVMODE_EURGB60_INT,
|
||||
640,
|
||||
480,
|
||||
480,
|
||||
30,
|
||||
0,
|
||||
660,
|
||||
480,
|
||||
VI_XFBMODE_DF,
|
||||
0,
|
||||
0,
|
||||
{{6, 6},
|
||||
{6, 6},
|
||||
{6, 6},
|
||||
|
||||
Reference in New Issue
Block a user