From f4dbab34e5be0e2aaed003b09dbe16b370d86edf Mon Sep 17 00:00:00 2001 From: Treeki Date: Mon, 8 Apr 2013 00:30:12 +0200 Subject: tons of APIs and stuff for other commits, don't feel like sorting it --- include/game.h | 248 +++++++- include/rvl/GXFrameBuffer.h | 1305 +++++++++++++++++++++++++++++++++++++++++++ kamek_pal.x | 70 ++- 3 files changed, 1613 insertions(+), 10 deletions(-) create mode 100644 include/rvl/GXFrameBuffer.h diff --git a/include/game.h b/include/game.h index 6cdc4f6..42304a5 100755 --- a/include/game.h +++ b/include/game.h @@ -39,6 +39,13 @@ float sin(float x); float ceil(float x); float floor(float x); } +enum Direction { + RIGHT = 0, + LEFT = 1, + UP = 2, + DOWN = 3, +}; + bool DVD_Start(); bool DVD_End(); @@ -500,6 +507,9 @@ public: u32 _otherDatum[38]; static WLClass *instance; + + void demoControlAllPlayers(); + void disableDemoControl(bool uselessVar); }; @@ -1583,6 +1593,12 @@ public: void executeState_##NAME(); \ void endState_##NAME(); +#define DECLARE_STATE_VIRTUAL(NAME) \ + static State StateID_##NAME; \ + virtual void beginState_##NAME(); \ + virtual void executeState_##NAME(); \ + virtual void endState_##NAME(); + #define CREATE_STATE(CLASS, NAME) \ CLASS::State CLASS::StateID_##NAME \ (#CLASS "::StateID_" #NAME, \ @@ -2184,7 +2200,7 @@ public: u8 eatenState; // 0=normal,2=eaten,4=spit out u8 _36D; Vec scaleBeforeBeingEaten; - u32 _37C, _380, _384, _388; + u32 _37C, lookAtMode, _384, _388; u8 stageActorType; u8 which_player; // _38D u8 disableFlagMask, currentLayerID; @@ -2204,7 +2220,7 @@ public: const char *GetExplanationString(); - virtual bool _vf60(); // does stuff with BG_GM + virtual bool isOutOfView(); // does stuff with BG_GM virtual void kill(); // nullsub here, defined in StageActor. probably no params virtual int _vf68(); // params unknown. return (1) might be bool virtual u8 *_vf6C(); // returns byte 0x38D @@ -2362,24 +2378,38 @@ class dPlayerInput_c { class daPlBase_c : public dStageActor_c { public: // Can't be assed to build full headers right now - u8 data[0xEA4 - 0x394]; + u8 data[0x45C - 0x394]; + float demoMoveSpeed; + u8 data3[0xEA4 - 0x460]; dPlayerInput_c input; // We're at 0x1008 now - u8 data2[0x1464 - 0x1008]; + u8 data2[0x1418 - 0x1008]; + dStateWrapper_c demoStates; + u32 demoStateParam; + u32 _1458, _145C; + u8 _1460; dStateWrapper_c states2; + void justFaceSpecificDirection(int direction); + void moveInDirection(float *targetX, float *speed); + bool isReadyForDemoControlAction(); + void setAnimePlayWithAnimID(int id); void setAnimePlayStandardType(int id); void setFlag(int flag); void clearFlag(int flag); bool testFlag(int flag); + + static daPlBase_c *findByID(int id); }; class dAcPy_c : public daPlBase_c { public: // Can't be assed to build full headers right now void *getYoshi(); // 80139A90 + + static dAcPy_c *findByID(int id); }; daPlBase_c *GetPlayerOrYoshi(int id); @@ -2408,16 +2438,17 @@ public: }; -/* TODO class dActorState_c : public dStageActor_c { public: + dActorState_c(); ~dActorState_c(); - virtual void _vfD4(); - virtual void _vfD8(); - virtual void _vfDC(); + dStateWrapper_c acState; + + virtual void beginState_Gegneric(); + virtual void executeState_Gegneric(); + virtual void endState_Gegneric(); }; -*/ class dActorMultiState_c : public dStageActor_c { @@ -2787,6 +2818,40 @@ class dWaterManager_c { class BgGmBase : public dBase_c { public: + struct something_s { + u16 x, y; + int layer, countdown, tile; + }; + struct limitLineEntry_s { + float leftX, rightX; + float _8, _C, _10, y, _18, _1C, _20, _24, _28, _2C; + float zoneY, zoneHeight, zoneX, zoneWidth; + u16 flags; // documented in idb struct, kind of + }; + struct manualZoomEntry_s { + float x1, x2, y1, y2; + u8 unkValue6, zoomLevel, firstFlag; + }; + struct beets_s { + float _0, _4; + u8 _8; + }; + + u32 behaviours; //type? + + int somethingCount; + something_s somethings[256]; + + // Limit lines grouped by: + // 64 zones; 8 groups IDed by mysterious setting; 16 lines per group + limitLineEntry_s limitLines[64][8][16]; + + manualZoomEntry_s manualZooms[64]; + + u32 _8F478, _8F47C; + + beets_s beets1[100]; + beets_s beets2[100]; // TODO, a lot u16 *getPointerToTile(int x, int y, int layer, int *pBlockNum = 0, bool unused = false); @@ -2975,6 +3040,7 @@ public: void plotPixel(u16 x, u16 y, GXColor pixel); // 802C1570 + void *getBuffer() const { return buffer; } u16 width; u16 height; @@ -3577,6 +3643,11 @@ inline int GetAreaNum() { return st[0x120E]; } +inline u8 *GetStaffCreditScore() { + char *thing = ((char*)StagePtr) + 0x11FC; + return *((u8**)thing); +} + class ClassWithCameraInfo { @@ -3855,8 +3926,12 @@ class dYesNoWindow_c : public dBase_c { }; +class daBossDemo_c; class StageE4 { public: + u8 ___[0x14]; + daBossDemo_c *currentBossDemo; + // NOT COMPLETE static StageE4 *instance; void killAllEnemiesAtLevelEnd(int type); @@ -3891,5 +3966,160 @@ struct PlayerAnimState { }; extern PlayerAnimState PlayerAnimStates[177]; + +class daEnBossKoopaDemoPeach_c : public dEn_c { + public: + mHeapAllocator_c allocator; + int stage; + nw4r::g3d::ResFile resFile; + m3d::mdl_c model; + m3d::anmChr_c chrAnm; + m3d::anmTexPat_c patAnm; + u8 _mysteryData[0x38]; + int counter; + u16 _628; + float _62C; + u32 cageID; + bool dontCallYet; + mEf::es2 effects[1]; + + + int onCreate(); + int onDelete(); + int onExecute(); + int onDraw(); + + daEnBossKoopaDemoPeach_c(); + ~daEnBossKoopaDemoPeach_c(); + + Vec2 _vf70(); + + virtual void beginState_Wait(); + virtual void executeState_Wait(); + virtual void endState_Wait(); + virtual void beginState_Call(); + virtual void executeState_Call(); + virtual void endState_Call(); + virtual void beginState_Turn(); + virtual void executeState_Turn(); + virtual void endState_Turn(); + virtual void beginState_Open(); + virtual void executeState_Open(); + virtual void endState_Open(); + virtual void beginState_Rescue(); + virtual void executeState_Rescue(); + virtual void endState_Rescue(); + virtual void beginState_Thank(); + virtual void executeState_Thank(); + virtual void endState_Thank(); + + REF_NINTENDO_STATE(Wait); + REF_NINTENDO_STATE(Call); + REF_NINTENDO_STATE(Turn); + REF_NINTENDO_STATE(Open); + REF_NINTENDO_STATE(Rescue); + REF_NINTENDO_STATE(Thank); +}; + +class dStageActorMgr_c { + public: + int depthCounter1, depthCounter2, depthCounter3, depthCounter4; + + u16 storedShorts[1000]; + u8 storedBytes[1000]; + + u16 _BC8; + bool _BCA, dontRunThings; + u32 lastScreenLeft, lastScreenTop, _BD4, _BD8; + + static dStageActorMgr_c *instance; +}; + +class daBossDemo_c : public dActorState_c { + public: + int onCreate(); + int onDelete(); + int onExecute(); + int onDraw(); + void willBeDeleted(); + + int counter; + u32 _3D4, idOfOtherActor; + + virtual void beginState_Ready(); + virtual void executeState_Ready(); + virtual void endState_Ready(); + virtual void beginState_BattleStDemo(); + virtual void executeState_BattleStDemo(); + virtual void endState_BattleStDemo(); + virtual void beginState_BattleIn(); + virtual void executeState_BattleIn(); + virtual void endState_BattleIn(); + virtual void beginState_BattleEdDemo(); + virtual void executeState_BattleEdDemo(); + virtual void endState_BattleEdDemo(); + + virtual bool beatLevel(); + virtual void exitLevel(); + + virtual void beginSomething() { } + virtual void endSomething() { } + + virtual u32 getIdOfOtherActor() { return idOfOtherActor; } + virtual void setIdOfOtherActor(int id) { idOfOtherActor = id; } + + virtual bool vf128() { return false; } + virtual u32 justReturnField3D4_decidesIfEndBattle() { return _3D4; } + virtual bool vf130() { return true; } + + virtual dStageActor_c *getActorPointerForSomething() { return 0; } + + virtual void init(); + + USING_STATES(daBossDemo_c); + REF_NINTENDO_STATE(Ready); + REF_NINTENDO_STATE(BattleStDemo); + REF_NINTENDO_STATE(BattleIn); + REF_NINTENDO_STATE(BattleEdDemo); +}; + +class BalloonRelatedClass { + public: + static BalloonRelatedClass *instance; + + u32 ___[0x20]; + u32 _20; +}; + +class Stage80 { + public: + static Stage80 *instance; + + float acparamb1, acparambptr, acparamb2, acparamb3, acparamb4; + float acparam1, acparamptr, acparam2, acparam3, acparam4; + float screenXOffset, screenYOffset; + u32 someFlag; // &1 = dEn_c::add2ToYSpeed(), &2 = pow, &4 = mpgp + u32 _34; + u8 _38, _39; + int lengthOfPow, lengthOfMPGP; +}; + +class dTheEnd_c : public dBase_c { + public: + m2d::EmbedLayout_c layout; + dStateWrapper_c state; + + nw4r::lyt::Pane *rootPane; + + bool layoutLoaded, willShow, willHide, animationPlaying; +}; +inline dTheEnd_c *GetTheEnd() { + char *thing = ((char*)StagePtr) + 0x1200; + return *((dTheEnd_c**)thing); +} + +extern void *_8042A788; +extern "C" void sub_8019C390(void *, int); + #endif diff --git a/include/rvl/GXFrameBuffer.h b/include/rvl/GXFrameBuffer.h new file mode 100644 index 0000000..a6dd635 --- /dev/null +++ b/include/rvl/GXFrameBuffer.h @@ -0,0 +1,1305 @@ +/*---------------------------------------------------------------------------* + Project: Dolphin GX library + File: GXFrameBuffer.h + + Copyright 1998- 2002 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Log: GXFrameBuffer.h,v $ + Revision 1.4 2006/08/10 13:38:01 urata + Removed all rendermodes of progressive 50Hz. + + Revision 1.3 2006/05/18 09:40:10 urata + Added the rendermode of progressive for PAL and MPAL. + + Revision 1.2 2006/02/04 11:56:46 hashida + (none) + + Revision 1.1.1.1 2005/12/29 06:53:28 hiratsu + Initial import. + + Revision 1.1.1.1 2005/05/12 02:41:07 yasuh-to + Ported from dolphin source tree. + + + 19 2002/02/12 14:29 Hirose + Added GXNtsc480ProgSoft mode. + + 18 2002/07/24 9:06 Hirose + Resolved version conflicts. + + 18 2002/04/09 15:15 Hirose + const type specifier support. (worked by hiratsu@IRD) + + 17 2001/11/15 9:24p Hirose + Added GXGetYScaleFactor and GXGetNumXfbLines. + + 16 2001/11/02 5:33p Hashida + Renamed eu60 -> eurgb60 + + 15 2001/11/01 3:37p Hashida + Added EURGB60 mode support. + + 14 2001/10/18 11:54a Hashida + No change. + + 13 2001/10/14 8:05p Hashida + Added RenderModeObj for EU60 mode. + + 12 2001/09/21 3:44p Hashida + Fixed wrong settings for Y origin in the double strike modes. + + 11 2001/07/26 6:04p Carl + Fixed extern for GXPal524IntAa. + + 10 2001/04/12 3:49p Carl + Added stuff for NTSC progressive modes. + + 9 2001/01/11 4:31p Hashida + Added a comment to show developers what the actual settings for each + render mode is. + + 8 2000/08/10 2:39p Carl + Fixed GX_MAX_Z16 to equal GX_MAX_Z24. + Added a comment to deprecate its usage. + + 7 2000/06/06 1:29p Carl + Removed obsolete API. + + 6 2000/04/26 4:09p Alligator + mod GXSetDispCopyFrame2Field to take GXCopyMode as param + + 5 2000/04/08 2:47p Hirose + Updated GXSetCopyFilter. + + 4 2000/03/23 4:23p Carl + Added GXAdjustForOverscan prototype. + + 3 2000/03/13 6:18p Danm + Fixed AA sampling locations to use x,y pairs. + + 2 2000/02/12 5:16p Alligator + Integrate ArtX source tree changes + + 10 1999/10/13 5:19p Alligator + changed CopySrc functions to use xorig, yorig, wd, ht + + 9 1999/09/30 10:40p Yasu + Renamed some GX functions and enums + + 8 1999/09/24 4:23p Yasu + Add GX_MAX_Z24/16 macro + + 7 1999/09/22 6:14p Yasu + Changed the parameter of GXSetDispCopySrc and GXSetTexCopySrc(). + + 6 1999/09/21 2:33p Alligator + add aa flag, if aa set 16b pix format + + 5 1999/09/16 3:42p Alligator + update render mode api + + 4 1999/09/09 3:04p Alligator + move GXSetRenderMode to GX lib from emu + + 3 1999/09/02 3:18p Ryan + Made Frame Buffer Api changes + + 2 1999/07/28 4:07p Alligator + update header files and emulator for hw changes + + 1 1999/07/14 4:20p Alligator + Split gx.h into individual header files for each major section of API + $NoKeywords: $ + *---------------------------------------------------------------------------*/ + +#ifndef __GXFRAMEBUFFER_H__ +#define __GXFRAMEBUFFER_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/*---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------*/ +/* Render Modes */ +/* (see the bottom of this file for actual settings used for each */ +/* render mode) */ +/*---------------------------------------------------------------------------*/ +extern GXRenderModeObj GXNtsc240Ds; +extern GXRenderModeObj GXNtsc240DsAa; +extern GXRenderModeObj GXNtsc240Int; +extern GXRenderModeObj GXNtsc240IntAa; +extern GXRenderModeObj GXNtsc480IntDf; +extern GXRenderModeObj GXNtsc480Int; +extern GXRenderModeObj GXNtsc480IntAa; +extern GXRenderModeObj GXNtsc480Prog; +extern GXRenderModeObj GXNtsc480ProgSoft; +extern GXRenderModeObj GXNtsc480ProgAa; +extern GXRenderModeObj GXMpal240Ds; +extern GXRenderModeObj GXMpal240DsAa; +extern GXRenderModeObj GXMpal240Int; +extern GXRenderModeObj GXMpal240IntAa; +extern GXRenderModeObj GXMpal480IntDf; +extern GXRenderModeObj GXMpal480Int; +extern GXRenderModeObj GXMpal480IntAa; +extern GXRenderModeObj GXMpal480Prog; +extern GXRenderModeObj GXMpal480ProgSoft; +extern GXRenderModeObj GXMpal480ProgAa; +extern GXRenderModeObj GXPal264Ds; +extern GXRenderModeObj GXPal264DsAa; +extern GXRenderModeObj GXPal264Int; +extern GXRenderModeObj GXPal264IntAa; +extern GXRenderModeObj GXPal528IntDf; +extern GXRenderModeObj GXPal528Int; +extern GXRenderModeObj GXPal524IntAa; // Reduced due to overlap requirement! +extern GXRenderModeObj GXEurgb60Hz240Ds; +extern GXRenderModeObj GXEurgb60Hz240DsAa; +extern GXRenderModeObj GXEurgb60Hz240Int; +extern GXRenderModeObj GXEurgb60Hz240IntAa; +extern GXRenderModeObj GXEurgb60Hz480IntDf; +extern GXRenderModeObj GXEurgb60Hz480Int; +extern GXRenderModeObj GXEurgb60Hz480IntAa; +extern GXRenderModeObj GXEurgb60Hz480Prog; +extern GXRenderModeObj GXEurgb60Hz480ProgSoft; +extern GXRenderModeObj GXEurgb60Hz480ProgAa; + +/*---------------------------------------------------------------------------*/ +void GXAdjustForOverscan ( const GXRenderModeObj *rmin, GXRenderModeObj *rmout, + u16 hor, u16 ver ); +void GXSetDispCopySrc ( u16 left, u16 top, u16 wd, u16 ht ); +void GXSetTexCopySrc ( u16 left, u16 top, u16 wd, u16 ht ); +void GXSetDispCopyDst ( u16 wd, u16 ht ); +void GXSetTexCopyDst ( u16 wd, u16 ht, GXTexFmt fmt, GXBool mipmap ); + +void GXSetDispCopyFrame2Field( GXCopyMode mode ); +void GXSetCopyClamp( GXFBClamp clamp ); +u32 GXSetDispCopyYScale( f32 vscale ); +void GXSetCopyClear( GXColor clear_clr, u32 clear_z); +void GXSetCopyFilter( GXBool aa, const u8 sample_pattern[12][2], GXBool vf, const u8 vfilter[7] ); +void GXSetDispCopyGamma( GXGamma gamma ); + +void GXCopyDisp( void *dest, GXBool clear ); +void GXCopyTex ( void *dest, GXBool clear ); + +f32 GXGetYScaleFactor( u16 efbHeight, u16 xfbHeight ); +u16 GXGetNumXfbLines( u16 efbHeight, f32 yScale ); + +void GXClearBoundingBox( void ); +void GXReadBoundingBox ( u16 *left, u16 *top, u16 *right, u16 *bottom ); + +/*---------------------------------------------------------------------------*/ + +// The clear Z value is always in 24-bit format, regardless of pixel fmt. +// Thus the GX_MAX_Z16 is not really necessary. You should not use it. +// It is included here only for backwards compatibility. + +#define GX_MAX_Z24 0x00ffffff + +#define GX_MAX_Z16 0x00ffffff + +/*---------------------------------------------------------------------------*/ + +// Actual settings used for each GXRenderModeObj for developers' reference +// +// The following is intentionally ifdef'ed out to show each GXRenderModeObj +// settings to developers. +// + +#if 0 + +GXRenderModeObj GXNtsc240Ds = +{ + VI_TVMODE_NTSC_DS, // viDisplayMode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_NTSC - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_NTSC/2 - 480/2)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXNtsc240DsAa = +{ + VI_TVMODE_NTSC_DS, // viDisplayMode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_NTSC - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_NTSC/2 - 480/2)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXNtsc240Int = +{ + VI_TVMODE_NTSC_INT, // viDisplayMode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_NTSC - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_NTSC - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_TRUE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXNtsc240IntAa = +{ + VI_TVMODE_NTSC_INT, // viDisplayMode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_NTSC - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_NTSC - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_TRUE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXNtsc480IntDf = +{ + VI_TVMODE_NTSC_INT, // viDisplayMode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_NTSC - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_NTSC - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 8, // line n-1 + 8, // line n-1 + 10, // line n + 12, // line n + 10, // line n + 8, // line n+1 + 8 // line n+1 +}; +GXRenderModeObj GXNtsc480Int = +{ + VI_TVMODE_NTSC_INT, // viDisplayMode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_NTSC - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_NTSC - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXNtsc480IntAa = +{ + VI_TVMODE_NTSC_INT, // viDisplayMode + 640, // fbWidth + 242, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_NTSC - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_NTSC - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 4, // line n-1 + 8, // line n-1 + 12, // line n + 16, // line n + 12, // line n + 8, // line n+1 + 4 // line n+1 +}; +GXRenderModeObj GXNtsc480Prog = +{ + VI_TVMODE_NTSC_PROG, // viDisplayMode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_NTSC - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_NTSC - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXNtsc480ProgSoft = +{ + VI_TVMODE_NTSC_PROG, // viDisplayMode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_NTSC - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_NTSC - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 8, // line n-1 + 8, // line n-1 + 10, // line n + 12, // line n + 10, // line n + 8, // line n+1 + 8 // line n+1 +}; +GXRenderModeObj GXNtsc480ProgAa = +{ + VI_TVMODE_NTSC_PROG, // viDisplayMode + 640, // fbWidth + 242, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_NTSC - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_NTSC - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 4, // line n-1 + 8, // line n-1 + 12, // line n + 16, // line n + 12, // line n + 8, // line n+1 + 4 // line n+1 +}; + +/*---------------------------------------------------------------------------*/ + +GXRenderModeObj GXMpal240Ds = +{ + VI_TVMODE_MPAL_DS, // viDisplayMode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_MPAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_MPAL/2 - 480/2)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXMpal240DsAa = +{ + VI_TVMODE_MPAL_DS, // viDisplayMode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_MPAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_MPAL/2 - 480/2)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXMpal240Int = +{ + VI_TVMODE_MPAL_INT, // viDisplayMode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_MPAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_MPAL - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_TRUE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXMpal240IntAa = +{ + VI_TVMODE_MPAL_INT, // viDisplayMode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_MPAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_MPAL - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_TRUE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXMpal480IntDf = +{ + VI_TVMODE_MPAL_INT, // viDisplayMode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_MPAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_MPAL - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 8, // line n-1 + 8, // line n-1 + 10, // line n + 12, // line n + 10, // line n + 8, // line n+1 + 8 // line n+1 +}; +GXRenderModeObj GXMpal480Int = +{ + VI_TVMODE_MPAL_INT, // viDisplayMode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_MPAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_MPAL - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXMpal480IntAa = +{ + VI_TVMODE_MPAL_INT, // viDisplayMode + 640, // fbWidth + 242, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_MPAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_MPAL - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 4, // line n-1 + 8, // line n-1 + 12, // line n + 16, // line n + 12, // line n + 8, // line n+1 + 4 // line n+1 +}; +GXRenderModeObj GXMpal480Prog = +{ + VI_TVMODE_MPAL_PROG, // viDisplayMode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_MPAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_MPAL - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXMpal480ProgSoft = +{ + VI_TVMODE_MPAL_PROG, // viDisplayMode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_MPAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_MPAL - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 8, // line n-1 + 8, // line n-1 + 10, // line n + 12, // line n + 10, // line n + 8, // line n+1 + 8 // line n+1 +}; +GXRenderModeObj GXMpal480ProgAa = +{ + VI_TVMODE_MPAL_PROG, // viDisplayMode + 640, // fbWidth + 242, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_MPAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_MPAL - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 4, // line n-1 + 8, // line n-1 + 12, // line n + 16, // line n + 12, // line n + 8, // line n+1 + 4 // line n+1 +}; +/*---------------------------------------------------------------------------*/ + +GXRenderModeObj GXPal264Ds = +{ + VI_TVMODE_PAL_DS, // viDisplayMode + 640, // fbWidth + 264, // efbHeight + 264, // xfbHeight + (VI_MAX_WIDTH_PAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_PAL/2 - 528/2)/2, // viYOrigin + 640, // viWidth + 528, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXPal264DsAa = +{ + VI_TVMODE_PAL_DS, // viDisplayMode + 640, // fbWidth + 264, // efbHeight + 264, // xfbHeight + (VI_MAX_WIDTH_PAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_PAL/2 - 528/2)/2, // viYOrigin + 640, // viWidth + 528, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXPal264Int = +{ + VI_TVMODE_PAL_INT, // viDisplayMode + 640, // fbWidth + 264, // efbHeight + 264, // xfbHeight + (VI_MAX_WIDTH_PAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_PAL - 528)/2, // viYOrigin + 640, // viWidth + 528, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_TRUE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXPal264IntAa = +{ + VI_TVMODE_PAL_INT, // viDisplayMode + 640, // fbWidth + 264, // efbHeight + 264, // xfbHeight + (VI_MAX_WIDTH_PAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_PAL - 528)/2, // viYOrigin + 640, // viWidth + 528, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_TRUE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXPal528IntDf = +{ + VI_TVMODE_PAL_INT, // viDisplayMode + 640, // fbWidth + 528, // efbHeight + 528, // xfbHeight + (VI_MAX_WIDTH_PAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_PAL - 528)/2, // viYOrigin + 640, // viWidth + 528, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 8, // line n-1 + 8, // line n-1 + 10, // line n + 12, // line n + 10, // line n + 8, // line n+1 + 8 // line n+1 +}; +GXRenderModeObj GXPal528Int = +{ + VI_TVMODE_PAL_INT, // viDisplayMode + 640, // fbWidth + 528, // efbHeight + 528, // xfbHeight + (VI_MAX_WIDTH_PAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_PAL - 528)/2, // viYOrigin + 640, // viWidth + 528, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXPal524IntAa = +{ + VI_TVMODE_PAL_INT, // viDisplayMode + 640, // fbWidth + 264, // efbHeight (maximum is 528/2) + 524, // xfbHeight (allow for required overlap of 4 lines) + (VI_MAX_WIDTH_PAL - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_PAL - 528)/2, // viYOrigin + 640, // viWidth + 524, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 4, // line n-1 + 8, // line n-1 + 12, // line n + 16, // line n + 12, // line n + 8, // line n+1 + 4 // line n+1 +}; + +GXRenderModeObj GXEurgb60Hz240Ds = +{ + VI_TVMODE_EURGB60_DS, // viTVmode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_EURGB60 - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_EURGB60/2 - 480/2)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXEurgb60Hz240DsAa = +{ + VI_TVMODE_EURGB60_DS, // viTVmode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_EURGB60 - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_EURGB60/2 - 480/2)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXEurgb60Hz240Int = +{ + VI_TVMODE_EURGB60_INT, // viTVmode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_EURGB60 - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_EURGB60 - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_TRUE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXEurgb60Hz240IntAa = +{ + VI_TVMODE_EURGB60_INT, // viTVmode + 640, // fbWidth + 240, // efbHeight + 240, // xfbHeight + (VI_MAX_WIDTH_EURGB60 - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_EURGB60 - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_TRUE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXEurgb60Hz480IntDf = +{ + VI_TVMODE_EURGB60_INT, // viTVmode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_EURGB60 - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_EURGB60 - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 8, // line n-1 + 8, // line n-1 + 10, // line n + 12, // line n + 10, // line n + 8, // line n+1 + 8 // line n+1 +}; +GXRenderModeObj GXEurgb60Hz480Int = +{ + VI_TVMODE_EURGB60_INT, // viTVmode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_EURGB60 - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_EURGB60 - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXEurgb60Hz480IntAa = +{ + VI_TVMODE_EURGB60_INT, // viTVmode + 640, // fbWidth + 242, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_EURGB60 - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_EURGB60 - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_DF, // xFBmode + GX_FALSE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 4, // line n-1 + 8, // line n-1 + 12, // line n + 16, // line n + 12, // line n + 8, // line n+1 + 4 // line n+1 +}; +GXRenderModeObj GXEurgb60Hz480Prog = +{ + VI_TVMODE_EURGB60_PROG, // viDisplayMode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_EURGB60 - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_EURGB60 - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 0, // line n-1 + 0, // line n-1 + 21, // line n + 22, // line n + 21, // line n + 0, // line n+1 + 0 // line n+1 +}; +GXRenderModeObj GXEurgb60Hz480ProgSoft = +{ + VI_TVMODE_EURGB60_PROG, // viDisplayMode + 640, // fbWidth + 480, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_EURGB60 - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_EURGB60 - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_FALSE, // aa + + // sample points arranged in increasing Y order + 6, 6, 6, 6, 6, 6, // pix 0, 3 sample points, 1/12 units, 4 bits each + 6, 6, 6, 6, 6, 6, // pix 1 + 6, 6, 6, 6, 6, 6, // pix 2 + 6, 6, 6, 6, 6, 6, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 8, // line n-1 + 8, // line n-1 + 10, // line n + 12, // line n + 10, // line n + 8, // line n+1 + 8 // line n+1 +}; +GXRenderModeObj GXEurgb60Hz480ProgAa = +{ + VI_TVMODE_EURGB60_PROG, // viDisplayMode + 640, // fbWidth + 242, // efbHeight + 480, // xfbHeight + (VI_MAX_WIDTH_EURGB60 - 640)/2, // viXOrigin + (VI_MAX_HEIGHT_EURGB60 - 480)/2, // viYOrigin + 640, // viWidth + 480, // viHeight + VI_XFBMODE_SF, // xFBmode + GX_FALSE, // field_rendering + GX_TRUE, // aa + + // sample points arranged in increasing Y order + 3, 2, 9, 6, 3, 10, // pix 0, 3 sample points, 1/12 units, 4 bits each + 3, 2, 9, 6, 3, 10, // pix 1 + 9, 2, 3, 6, 9, 10, // pix 2 + 9, 2, 3, 6, 9, 10, // pix 3 + + // vertical filter[7], 1/64 units, 6 bits each + 4, // line n-1 + 8, // line n-1 + 12, // line n + 16, // line n + 12, // line n + 8, // line n+1 + 4 // line n+1 +}; + + +#endif // #if 0 +/*---------------------------------------------------------------------------*/ + +#ifdef __cplusplus +} +#endif + +#endif // __GXFRAMEBUFFER_H__ diff --git a/kamek_pal.x b/kamek_pal.x index ca8f4bd..fa2f045 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -1,5 +1,45 @@ SECTIONS { + CreditsModeActive = 0x8042A4FF; + GetRail = 0x800D91B0; + instance__7Stage80 = 0x8042A2E8; + continueAddToCoinCount = 0x80060254; + continueAddToScore = 0x800B3544; + + StaffCreditsAddCoin = 0x800B51D0; + ContinueFromEFBMagic2 = 0x802BC6B4; TogeTekkyuIceballCollision = 0x80AB6DA0; + _8042A788 = 0x8042A788; + sub_8019C390 = 0x8019C390; + + StateID_Wait__24daEnBossKoopaDemoPeach_c = 0x80B8C350; + StateID_Call__24daEnBossKoopaDemoPeach_c = 0x80B8C390; + StateID_Turn__24daEnBossKoopaDemoPeach_c = 0x80B8C3D0; + StateID_Open__24daEnBossKoopaDemoPeach_c = 0x80B8C410; + StateID_Rescue__24daEnBossKoopaDemoPeach_c = 0x80B8C450; + StateID_Thank__24daEnBossKoopaDemoPeach_c = 0x80B8C490; + + __vt__12daBossDemo_c = 0x80301804; + onExecute__12daBossDemo_cFv = 0x8001CCB0; + onDraw__12daBossDemo_cFv = 0x8001CCF0; + willBeDeleted__12daBossDemo_cFv = 0x8001CD00; + onDelete__12daBossDemo_cFv = 0x8001CD10; + endState_BattleEdDemo__12daBossDemo_cFv = 0x8001D190; + executeState_BattleEdDemo__12daBossDemo_cFv = 0x8001D1A0; + beginState_BattleEdDemo__12daBossDemo_cFv = 0x8001D180; + endState_BattleIn__12daBossDemo_cFv = 0x8001D100; + executeState_BattleIn__12daBossDemo_cFv = 0x8001D110; + beginState_BattleIn__12daBossDemo_cFv = 0x8001D090; + endState_BattleStDemo__12daBossDemo_cFv = 0x8001D070; + executeState_BattleStDemo__12daBossDemo_cFv = 0x8001D080; + beginState_BattleStDemo__12daBossDemo_cFv = 0x8001D060; + endState_Ready__12daBossDemo_cFv = 0x8001CF60; + executeState_Ready__12daBossDemo_cFv = 0x8001CF70; + beginState_Ready__12daBossDemo_cFv = 0x8001CF50; + beatLevel__12daBossDemo_cFv = 0x8001CE00; + exitLevel__12daBossDemo_cFv = 0x8001CE40; + + instance__19BalloonRelatedClass = 0x8042A068; + PlayerAnimStates = 0x802F1650; ContinueFromFixFireballSensorSetup = 0x8011A830; GetPosForLayoutEffect__FP7Point3db = 0x800B37E0; @@ -12,13 +52,21 @@ SECTIONS { KazanRock_Explode = 0x8081F190; GetPlayerOrYoshi__Fi = 0x8005FB90; + findByID__10daPlBase_cFi = 0x8005FB90; + findByID__7dAcPy_cFi = 0x8005F900; + justFaceSpecificDirection__10daPlBase_cFi = 0x80051F30; + moveInDirection__10daPlBase_cFPfPf = 0x80052080; getYoshi__7dAcPy_cFv = 0x80139A90; setAnimePlayWithAnimID__10daPlBase_cFi = 0x80052170; setAnimePlayStandardType__10daPlBase_cFi = 0x80052290; setFlag__14dPlayerInput_cFQ214dPlayerInput_c5Flags = 0x8005E3B0; + setPermanentForcedButtons__14dPlayerInput_cFUi = 0x8005E910; + setTransientForcedButtons__14dPlayerInput_cFUi = 0x8005E960; + unsetPermanentForcedButtons__14dPlayerInput_cFUi = 0x8005E930; setFlag__10daPlBase_cFi = 0x80056C70; clearFlag__10daPlBase_cFi = 0x80056CB0; testFlag__10daPlBase_cFi = 0x80056CF0; + isReadyForDemoControlAction__10daPlBase_cFv = 0x80052030; instance__15dWaterManager_c = 0x8042A3E0; queryPosition__15dWaterManager_cFP7Point2dP7Point2dPfPsi = 0x800EBA40; @@ -64,6 +112,7 @@ SECTIONS { Voice_SetADPCMLoop = 0x80281A90; DetachSound__Q34nw4r3snd11SoundHandleFv = 0x8027A340; + Pause__Q44nw4r3snd6detail10BasicSoundFbi = 0x80266580; Stop__Q44nw4r3snd6detail10BasicSoundFi = 0x80266390; SetPitch__Q44nw4r3snd6detail10BasicSoundFf = 0x802675F0; StrmSound_SetTrackVolume = 0x8027F9D0; @@ -201,16 +250,20 @@ SECTIONS { instance__13dCourseFull_c = 0x8042A178; getRectByID__9dCourse_cFUcP5mRect = 0x8008E890; + getNextGotoByID__9dCourse_cFUc = 0x8008E3D0; modifyPlayerPropertiesWithRollingObject = 0x80057820; EN_LandbarrelPlayerCollision = 0x80A582A0; /* Boss Related */ + instance__16dStageActorMgr_c = 0x8042A028; StartBGMMusic = 0x807DB420; StopBGMMusic = 0x807DB430; instance__11dStage32C_c = 0x8042A1F0; instance__7WLClass = 0x80429F74; + disableDemoControl__7WLClassFb = 0x8005CA50; + demoControlAllPlayers__7WLClassFv = 0x8005C930; ShakeScreen = 0x800D8D50; StageScreen = 0x8042A2E8; @@ -640,6 +693,12 @@ SECTIONS { checkLiquidImmersion__5dEn_cFP7Point2df = 0x80097250; bouncePlayer__5dEn_cFPvf = 0x800967A0; + __ct__13dActorState_cFv = 0x80066FC0; + __dt__13dActorState_cFv = 0x800671B0; + beginState_Gegneric__13dActorState_cFv = 0x80067230; + endState_Gegneric__13dActorState_cFv = 0x80067240; + executeState_Gegneric__13dActorState_cFv = 0x80067250; + _vfD8__18dActorMultiState_cFv = 0x80067590; _vfDC__18dActorMultiState_cFv = 0x800675B0; _vfE0__18dActorMultiState_cFv = 0x800675A0; @@ -655,7 +714,7 @@ SECTIONS { beforeDraw__13dStageActor_cFv = 0x80064540; afterDraw__13dStageActor_cFi = 0x800645E0; GetExplanationString__13dStageActor_cFv = 0x800645F0; - _vf60__13dStageActor_cFv = 0x80065080; + isOutOfView__13dStageActor_cFv = 0x80065080; kill__13dStageActor_cFv = 0x80065650; _vf68__13dStageActor_cFv = 0x8001D210; _vf6C__13dStageActor_cFv = 0x8001D200; @@ -964,7 +1023,9 @@ SECTIONS { link__16mHeapAllocator_cFiPvPCci = 0x800690C0; unlink__16mHeapAllocator_cFv = 0x800690E0; + __ct__10mTexture_cFv = 0x802C0D20; __ct__10mTexture_cFUsUs9_GXTexFmt = 0x802C0D70; + __dt__10mTexture_cFv = 0x802C0DB0; load__10mTexture_cF11_GXTexMapID = 0x802C0E50; flushDC__10mTexture_cFv = 0x802C0F10; makeLinearGradient__10mTexture_cFicUsUs8_GXColor8_GXColorb = 0x802C1120; @@ -1296,6 +1357,8 @@ SECTIONS { ARCReadDir = 0x801A00C0; ARCCloseDir = 0x801A0180; + GXGetTexBufferSize = 0x801C6CE0; + DCFlushRange = 0x801AC5B0; DCStoreRangeNoSync = 0x801AC640; VIGetNextField = 0x801BE020; @@ -1328,6 +1391,11 @@ SECTIONS { C_MTXPerspective = 0x801C13A0; C_MTXOrtho = 0x801C1490; + GXPixModeSync = 0x801C50B0; + GXSetTexCopySrc = 0x801C5AA0; + GXSetTexCopyDst = 0x801C5B10; + GXSetCopyFilter = 0x801C6080; + GXCopyTex = 0x801C63D0; GXSetVtxDesc = 0x801C3900; GXClearVtxDesc = 0x801C41B0; GXSetVtxAttrFmt = 0x801C41F0; -- cgit v1.2.3