You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
* buffers: refresh 15 and revert to base decomp * behavior script * color helper functions * extended bounds * egeo_layout * fixed model ids * camera conf improved * message panel ucode small * graph node * level script * mathutil updates * mathutil updates (allow unused funcs) * behaviors a - beta_fish * Add librtc and fix some data declarations * Move GRUCODE define to proper location in makefile * Refresh 15 * extra * Make ROM name smaller and change messages printed on build a bit * Fix console (lol) * Update UNF to latest master * Make ucode load from .o's (and also fix Super3D) * Fix crash with rumble + custom mario model * graph node and mathutil * removed behaviors * Ldtob documentation * _Putfld labeling * area * behavior actions * camera * debug updates * bubbles * envfx snow * farcall helpers * game init * geo misc * hud * only check if VC on render init * ingame menu * revert goddard to base decomp * insn disasm * interaction documentation * level geo * level update defines * macro special objects formatting changes * main.h documentation * map parser documentation & formatting * airborne documentation * mario actions automatic documentation * mario actions cutscene documentation * mario actions moving documentation and options * mario actions object documentation and options * mario stationary documentation * mario submerged documentation * mario misc documentation * mario step: ledge grab fixes and documentation * mario documentation * memory.h documentation * moving textures * object behaviors * object collision * fix flamethrower bug * object helpers * object list processor documentation * paintings * platform displacement * print / printf * puppycam absf * puppyprint updates and formatting changes * rendering graph node performance optimizations * rumble opt and doc * hqvm back to ultrasm64 * save file documentation and unlock defines * s2d engine * reset various files to ultrasm64 * file select * intro geo documentation * screen transition documentation * segment2.h * shadow overhaul * skybox refactor * sound init: clean up define usage + documentation * spawn object optimizations and documentation * spawn sound cleanup * sram to ultrasm64 * star select cleanup * title screen cleanup * dialogs / text * rename stomp smoke * stomp smoke -> small water splash * updated README * compilation flags * optimized file positions + support function/data sections * surface collision performance improvements * surface load optimizations * camera conf documentation * Allow easier command for opening puppyprint debug * Rearranged framebuffers & fixed puppyprint console printing * Fix shadow scaling and shifting * Fix SILHOUETTE, OBJECTS_REJ, and ucode loading, also clean up render phase system a bit. * Fixed build with BETTER_HANGING off * Clean up OBJECTS_REJ ifdefs * Fix duplicate comment & graph render layers/flags bitmask * Fixed build with BETTER_HANGING off * Fix Fast64 importing by reverting sSegmentTable change * Readded missing functions that caused build errors with Mario head enabled * Fixed clang compilation issues * Add INTER mode for geo_update_layer_transparency * Fix build warnings * bugfix: miscalculation in obj_turn_toward_object * Some puppytech fixes * Further Puppycamera fixes * Fix BUGFIX_DIALOG_TIME_STOP Fixes #136 * Fix sliding platform bparams * Add LEGACY_SHADOW_IDS define for Fast64 compatibility * Apply suggested changes * Better find_in_bounds_yaw_wdw_bob_thi ifdef * Fix build warnings for unused functions * Fixed stale reference bug from obj_mark_for_deletion change * Fixed incorrect digit for 100s #145 * Change groundpound-fix define and functionality to just disable bonking * Fixed puppyroll #134 * Adjust height value for terrain angle to kick in * fixed hi score flashing * Remove menudata backup (#131) Not considered important enough to keep * Fix fread() build warning * Add COURSE_NUM_TO_INDEX to save_file_get_star_flags check in bhv_unagi_init * Fix approach_s16 return value * Use boolean defines for oCapDoScaleVertically * Make the door lock a part of the key door model to eliminate z-fighting, also reduce z fighting on numbered doors with AUTO_LOD enabled. * Move flames to LAYER_TRANSPARENT_INTER * Resolved some compiler warnings and added FALL_THROUGH define (#168) * Address some more compiler warnings with different define toggles * Remove unnecessary fallthrough attribute * fixed geo_process_billboard floating point exception * Allow water to face any direction * Initialize focOffset so that BBH doesn't crash * Removed superfluous RDP commands when switching microcodes which would override scissor * Set OBJ_FLAG_DONT_CALC_COLL_DIST on bhvUkikiCage * Fix rumble build * Fixed UNLOCK_FPS strobing * Update src/game/object_helpers.c Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com> * Update src/game/object_helpers.c Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com> * Fix LEGACY_SHADOW_IDS id conflict * Use the vanilla default value for rotating fire bars if bparam2 is 0 * START_LEVEL safeguard * Fix some drawing distance issues caused by AUTO_COLLISION_DISTANCE * Fix rumble build * Fixed spline poll code using the wrong values for keyframes * Update readme with better credits Better credits for individual contributors * add arthur * added falco and moose * add fazana * le funny typo * added S2DEX engine to credits * silhouette + axo + ratio * remove specific callouts + add auto col distance * Update data/behavior_data.c Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com> * Update data/behavior_data.c Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com> * Update data/behavior_data.c Co-authored-by: thecozies <79979276+thecozies@users.noreply.github.com> * Revert formatting changes to match vanilla decomp * Re-implement Y buffer for find_ceil * Re-implement POWER_STARS_HEAL for normal Power Stars * Start level comment & exit course comment/collapse * utilize reonucam technique for FAST_VERTICAL_CAMERA_MOVEMENT * Fix "MAX_REFERENCED_WALLS" typo * Allow stop_and_set_height_to_floor to work at any height if Mario is teleporting (#213) * Revert stop_and_set_height_to_floor to vanilla Fixes #208 * Fixed sAudioEnabled so that it disables audio CPU processing as well * Fixed puppyprint debug RDP us calculations * Renamed sAudioEnabled to gAudioEnabled * Replaced mtxf_to_mtx_asm with an equivalent implementation that supports WORLD_SCALE * Moved extended bounds and world scale configuration to a new config_world.h file * Default all objects to non-rej (#227) Fixes #221 (Default all objects to non-rej) * Fix #221 * Fix VISUAL_DEBUG breaking/crashing when OBJECTS_REJ is disabled (#211) * Fix VISUAL_DEBUG breaking/crashing when OBJECTS_REJ is disabled * Change vtl decrement in visual_surface_display from 6 to 3 Fixes #207 * Make area in SL igloo wider to prevent a softlock (#233) Fixes #210 * Fix coin formation coins being deleted if they spawn in the middle of a floor, also fix TTM slide coin position (#232) Fixes #201 * Make UNLOCK_ALL apply to more things * Fix wrong ifdef/ifndef in bhv_invisible_objects_under_bridge_init * Change chain chomp load/unload distances depending on number of segments (#237) Fixes #192 * added WATER_PLUNGE_UPWARP define * Add reonucam patch (#239) * added reonucam patch Fixes #218 * Fix how shadows handle water/transparency/height (#228) * Fix how shadows handle water/transparency/height * Change shadow check for flying carpets from a level specific check to a oPlatformOnTrackType check Fixes #179 * added reonucam credit * delete unnecesary patches * Apply suggested changes * murdered more patches * UNLOCK_ALL unlocks the cap boxes * UNLOCK_ALL unlocks cap boxes (slightly more epic edition) * revert ceil buffer * Renamed HD_INTRO_TEXTURES define, separated intro floombas * prevent double definition of floombas * actually prevent floomba redefinition * Develop/refactor default defines (#242) * Changed default config options * Added build dir to includePaths for pngs * disable NO_SLEEP by default * Disable puppyprint by default Sorry fazana 😔 * fix typos * add comment about BETTER_REVERB console perf * disable blue coin switch retry by default * Update config_audio.h Co-authored-by: Reonu <danileon95@gmail.com> Co-authored-by: Mr-Wiseguy <68165316+Mr-Wiseguy@users.noreply.github.com> * revert air step line to vanilla to fix bitfs scaling platform issue (#247) Fixes #200 * Fix stuttering on thin slopes (#248) * Fix stuttering on thin slopes * Revert vec3f_find_ceil calls to vanilla * Rename vec3f_find_ceil to find_mario_ceil * Update src/engine/surface_collision.h Fixes #249 * Swap static and dynamic surface checks back to vanilla order (#253) * Swap static and dynamic surface checks back to vanilla order * re-enable DISABLE_ALL config Fixes #251 #252 * Fixed save and quitting while in widescreen (#257) * Fixed save and quitting while in widescreen * use define for the level * all my homies hate ifdefs * skip wall offsets < 0 (#255) Fixes #255 * #264: Document non-stop stars' issues (#267) * #264: Document non-stop stars' issues * Update include/config/config_game.h * nonstop vanilla comment * derive margin_radius from radius after capping at 200 (#266) Fixes #259 * Config cleanup/refactor (#269) * Moved puppyprint define to graphics / rearranged some debug defines for ease of access * Moved compatibility safeguards to config_safeguards.h * spacing and comment formatting * #272 Move GFX_POOL_SIZE to config_graphics.h * disable EASIER_DIALOG_TRIGGER by default * prevent redefining warnings * small ifdef typo * changed ifndef to undefs Fixes #262 Fixes #272 * Improved movement config documentation related to turning around (#271) Fixes #270 * rename CUSTOM_DEBUG, add comments (#275) * Update README.md (#277) * v2.0.0 Co-authored-by: CrashOveride95 <crashoveride953@gmail.com> Co-authored-by: Arceveti <73617174+Arceveti@users.noreply.github.com> Co-authored-by: n64 <n64> Co-authored-by: Fazana <52551480+FazanaJ@users.noreply.github.com> Co-authored-by: Mr-Wiseguy <mrwiseguyromhacking@gmail.com> Co-authored-by: aglab2 <aglab3@gmail.com> Co-authored-by: gheskett <gheskett@gmail.com> Co-authored-by: Reonu <danileon95@gmail.com> Co-authored-by: Axollyon <20480418+Axollyon@users.noreply.github.com> Co-authored-by: Mr-Wiseguy <68165316+Mr-Wiseguy@users.noreply.github.com>
393 lines
16 KiB
C
393 lines
16 KiB
C
/*---------------------------------------------------------------------
|
|
Copyright (C) 1997, Nintendo.
|
|
|
|
File gs2dex.h
|
|
Coded by Yoshitaka Yasumoto. Jul 31, 1997.
|
|
Modified by
|
|
Comments Header file for S2DEX ucode.
|
|
|
|
$Id: gs2dex.h,v 1.21 1998/05/28 00:14:49 has Exp $
|
|
---------------------------------------------------------------------*/
|
|
|
|
#ifndef _GS2DEX_H_
|
|
#define _GS2DEX_H_
|
|
|
|
#ifdef _LANGUAGE_C_PLUS_PLUS
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <PR/ultratypes.h>
|
|
|
|
/*===========================================================================*
|
|
* Macro
|
|
*===========================================================================*/
|
|
#define GS_CALC_DXT(line) (((1<< G_TX_DXT_FRAC)-1)/(line)+1)
|
|
#define GS_PIX2TMEM(pix, siz) ((pix)>>(4-(siz)))
|
|
#define GS_PIX2DXT(pix, siz) GS_CALC_DXT(GS_PIX2TMEM((pix), (siz)))
|
|
|
|
/*===========================================================================*
|
|
* Data structures for S2DEX microcode
|
|
*===========================================================================*/
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* Background
|
|
*---------------------------------------------------------------------------*/
|
|
#define G_BGLT_LOADBLOCK 0x0033
|
|
#define G_BGLT_LOADTILE 0xfff4
|
|
|
|
#define G_BG_FLAG_FLIPS 0x01
|
|
#define G_BG_FLAG_FLIPT 0x10
|
|
|
|
/* Non scalable background plane */
|
|
typedef struct {
|
|
u16 imageX; /* x-coordinate of upper-left position of texture (u10.5) */
|
|
u16 imageW; /* width of the texture (u10.2) */
|
|
s16 frameX; /* upper-left position of transferred frame (s10.2) */
|
|
u16 frameW; /* width of transferred frame (u10.2) */
|
|
|
|
u16 imageY; /* y-coordinate of upper-left position of texture (u10.5) */
|
|
u16 imageH; /* height of the texture (u10.2) */
|
|
s16 frameY; /* upper-left position of transferred frame (s10.2) */
|
|
u16 frameH; /* height of transferred frame (u10.2) */
|
|
|
|
u64 *imagePtr; /* texture source address on DRAM */
|
|
u16 imageLoad; /* which to use, LoadBlock or LoadTile */
|
|
u8 imageFmt; /* format of texel - G_IM_FMT_* */
|
|
u8 imageSiz; /* size of texel - G_IM_SIZ_* */
|
|
u16 imagePal; /* pallet number */
|
|
u16 imageFlip; /* right & left image inversion (Inverted by G_BG_FLAG_FLIPS) */
|
|
|
|
/* The following is set in the initialization routine guS2DInitBg(). There is no need for the user to set it. */
|
|
u16 tmemW; /* TMEM width and Word size of frame 1 line.
|
|
At LoadBlock, GS_PIX2TMEM(imageW/4,imageSiz)
|
|
At LoadTile GS_PIX2TMEM(frameW/4,imageSiz)+1 */
|
|
u16 tmemH; /* height of TMEM loadable at a time (s13.2) 4 times value
|
|
When the normal texture, 512/tmemW*4
|
|
When the CI texture, 256/tmemW*4 */
|
|
u16 tmemLoadSH; /* SH value
|
|
At LoadBlock, tmemSize/2-1
|
|
At LoadTile, tmemW*16-1 */
|
|
u16 tmemLoadTH; /* TH value or Stride value
|
|
At LoadBlock, GS_CALC_DXT(tmemW)
|
|
At LoadTile, tmemH-1 */
|
|
u16 tmemSizeW; /* skip value of imagePtr for image 1-line
|
|
At LoadBlock, tmemW*2
|
|
At LoadTile, GS_PIX2TMEM(imageW/4,imageSiz)*2 */
|
|
u16 tmemSize; /* skip value of imagePtr for 1-loading
|
|
= tmemSizeW*tmemH */
|
|
} uObjBg_t; /* 40 bytes */
|
|
|
|
/* Scalable background plane */
|
|
typedef struct {
|
|
u16 imageX; /* x-coordinate of upper-left position of texture (u10.5) */
|
|
u16 imageW; /* width of texture (u10.2) */
|
|
s16 frameX; /* upper-left position of transferred frame (s10.2) */
|
|
u16 frameW; /* width of transferred frame (u10.2) */
|
|
|
|
u16 imageY; /* y-coordinate of upper-left position of texture (u10.5) */
|
|
u16 imageH; /* height of texture (u10.2) */
|
|
s16 frameY; /* upper-left position of transferred frame (s10.2) */
|
|
u16 frameH; /* height of transferred frame (u10.2) */
|
|
|
|
u64 *imagePtr; /* texture source address on DRAM */
|
|
u16 imageLoad; /* Which to use, LoadBlock or LoadTile? */
|
|
u8 imageFmt; /* format of texel - G_IM_FMT_* */
|
|
u8 imageSiz; /* size of texel - G_IM_SIZ_* */
|
|
u16 imagePal; /* pallet number */
|
|
u16 imageFlip; /* right & left image inversion (Inverted by G_BG_FLAG_FLIPS) */
|
|
|
|
u16 scaleW; /* scale value of X-direction (u5.10) */
|
|
u16 scaleH; /* scale value of Y-direction (u5.10) */
|
|
s32 imageYorig; /* start point of drawing on image (s20.5) */
|
|
|
|
u8 padding[4];
|
|
|
|
} uObjScaleBg_t; /* 40 bytes */
|
|
|
|
typedef union {
|
|
uObjBg_t b;
|
|
uObjScaleBg_t s;
|
|
long long int force_structure_alignment;
|
|
} uObjBg;
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* 2D Objects
|
|
*---------------------------------------------------------------------------*/
|
|
#define G_OBJ_FLAG_FLIPS 1<<0 /* inversion to S-direction */
|
|
#define G_OBJ_FLAG_FLIPT 1<<4 /* nversion to T-direction */
|
|
|
|
typedef struct {
|
|
s16 objX; /* s10.2 OBJ x-coordinate of upper-left end */
|
|
u16 scaleW; /* u5.10 Scaling of u5.10 width direction */
|
|
u16 imageW; /* u10.5 width of u10.5 texture (length of S-direction) */
|
|
u16 paddingX; /* Unused - Always 0 */
|
|
s16 objY; /* s10.2 OBJ y-coordinate of s10.2 OBJ upper-left end */
|
|
u16 scaleH; /* u5.10 Scaling of u5.10 height direction */
|
|
u16 imageH; /* u10.5 height of u10.5 texture (length of T-direction) */
|
|
u16 paddingY; /* Unused - Always 0 */
|
|
u16 imageStride; /* folding width of texel (In units of 64bit word) */
|
|
u16 imageAdrs; /* texture header position in TMEM (In units of 64bit word) */
|
|
u8 imageFmt; /* format of texel - G_IM_FMT_* */
|
|
u8 imageSiz; /* size of texel - G_IM_SIZ_* */
|
|
u8 imagePal; /* pallet number (0-7) */
|
|
u8 imageFlags; /* The display flag - G_OBJ_FLAG_FLIP* */
|
|
} uObjSprite_t; /* 24 bytes */
|
|
|
|
typedef union {
|
|
uObjSprite_t s;
|
|
long long int force_structure_alignment;
|
|
} uObjSprite;
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* 2D Matrix
|
|
*---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
s32 A, B, C, D; /* s15.16 */
|
|
s16 X, Y; /* s10.2 */
|
|
u16 BaseScaleX; /* u5.10 */
|
|
u16 BaseScaleY; /* u5.10 */
|
|
} uObjMtx_t; /* 24 bytes */
|
|
|
|
typedef union {
|
|
uObjMtx_t m;
|
|
long long int force_structure_alignment;
|
|
} uObjMtx;
|
|
|
|
typedef struct {
|
|
s16 X, Y; /* s10.2 */
|
|
u16 BaseScaleX; /* u5.10 */
|
|
u16 BaseScaleY; /* u5.10 */
|
|
} uObjSubMtx_t; /* 8 bytes */
|
|
|
|
typedef union {
|
|
uObjSubMtx_t m;
|
|
long long int force_structure_alignment;
|
|
} uObjSubMtx;
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* Loading into TMEM
|
|
*---------------------------------------------------------------------------*/
|
|
#define G_OBJLT_TXTRBLOCK 0x00001033
|
|
#define G_OBJLT_TXTRTILE 0x00fc1034
|
|
#define G_OBJLT_TLUT 0x00000030
|
|
|
|
#define GS_TB_TSIZE(pix,siz) (GS_PIX2TMEM((pix),(siz))-1)
|
|
#define GS_TB_TLINE(pix,siz) (GS_CALC_DXT(GS_PIX2TMEM((pix),(siz))))
|
|
|
|
typedef struct {
|
|
u32 type; /* G_OBJLT_TXTRBLOCK divided into types */
|
|
u64 *image; /* texture source address on DRAM */
|
|
u16 tmem; /* loaded TMEM word address (8byteWORD) */
|
|
u16 tsize; /* Texture size, Specified by macro GS_TB_TSIZE() */
|
|
u16 tline; /* width of Texture 1-line, Specified by macro GS_TB_TLINE() */
|
|
u16 sid; /* STATE ID Multipled by 4 (Either one of 0, 4, 8 and 12) */
|
|
u32 flag; /* STATE flag */
|
|
u32 mask; /* STATE mask */
|
|
} uObjTxtrBlock_t; /* 24 bytes */
|
|
|
|
#define GS_TT_TWIDTH(pix,siz) ((GS_PIX2TMEM((pix), (siz))<<2)-1)
|
|
#define GS_TT_THEIGHT(pix,siz) (((pix)<<2)-1)
|
|
|
|
typedef struct {
|
|
u32 type; /* G_OBJLT_TXTRTILE divided into types */
|
|
u64 *image; /* texture source address on DRAM */
|
|
u16 tmem; /* loaded TMEM word address (8byteWORD)*/
|
|
u16 twidth; /* width of Texture (Specified by macro GS_TT_TWIDTH()) */
|
|
u16 theight; /* height of Texture (Specified by macro GS_TT_THEIGHT()) */
|
|
u16 sid; /* STATE ID Multipled by 4 (Either one of 0, 4, 8 and 12) */
|
|
u32 flag; /* STATE flag */
|
|
u32 mask; /* STATE mask */
|
|
} uObjTxtrTile_t; /* 24 bytes */
|
|
|
|
#define GS_PAL_HEAD(head) ((head)+256)
|
|
#define GS_PAL_NUM(num) ((num)-1)
|
|
|
|
typedef struct {
|
|
u32 type; /* G_OBJLT_TLUT divided into types */
|
|
u64 *image; /* texture source address on DRAM */
|
|
u16 phead; /* pallet number of load header (Between 256 and 511) */
|
|
u16 pnum; /* loading pallet number -1 */
|
|
u16 zero; /* Assign 0 all the time */
|
|
u16 sid; /* STATE ID Multipled by 4 (Either one of 0, 4, 8 and 12)*/
|
|
u32 flag; /* STATE flag */
|
|
u32 mask; /* STATE mask */
|
|
} uObjTxtrTLUT_t; /* 24 bytes */
|
|
|
|
typedef union {
|
|
uObjTxtrBlock_t block;
|
|
uObjTxtrTile_t tile;
|
|
uObjTxtrTLUT_t tlut;
|
|
long long int force_structure_alignment;
|
|
} uObjTxtr;
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* Loading into TMEM & 2D Objects
|
|
*---------------------------------------------------------------------------*/
|
|
typedef struct {
|
|
uObjTxtr txtr;
|
|
uObjSprite sprite;
|
|
} uObjTxSprite; /* 48 bytes */
|
|
|
|
/*===========================================================================*
|
|
* GBI Commands for S2DEX microcode
|
|
*===========================================================================*/
|
|
/* GBI Header */
|
|
#ifdef F3DEX_GBI_2
|
|
#define G_OBJ_RECTANGLE_R 0xda
|
|
#define G_OBJ_MOVEMEM 0xdc
|
|
#define G_RDPHALF_0 0xe4
|
|
#define G_OBJ_RECTANGLE 0x01
|
|
#define G_OBJ_SPRITE 0x02
|
|
#define G_SELECT_DL 0x04
|
|
#define G_OBJ_LOADTXTR 0x05
|
|
#define G_OBJ_LDTX_SPRITE 0x06
|
|
#define G_OBJ_LDTX_RECT 0x07
|
|
#define G_OBJ_LDTX_RECT_R 0x08
|
|
#define G_BG_1CYC 0x09
|
|
#define G_BG_COPY 0x0a
|
|
#define G_OBJ_RENDERMODE 0x0b
|
|
#else
|
|
#define G_BG_1CYC 0x01
|
|
#define G_BG_COPY 0x02
|
|
#define G_OBJ_RECTANGLE 0x03
|
|
#define G_OBJ_SPRITE 0x04
|
|
#define G_OBJ_MOVEMEM 0x05
|
|
#define G_SELECT_DL 0xb0
|
|
#define G_OBJ_RENDERMODE 0xb1
|
|
#define G_OBJ_RECTANGLE_R 0xb2
|
|
#define G_OBJ_LOADTXTR 0xc1
|
|
#define G_OBJ_LDTX_SPRITE 0xc2
|
|
#define G_OBJ_LDTX_RECT 0xc3
|
|
#define G_OBJ_LDTX_RECT_R 0xc4
|
|
#define G_RDPHALF_0 0xe4
|
|
#endif
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* Background wrapped screen
|
|
*---------------------------------------------------------------------------*/
|
|
#define gSPBgRectangle(pkt, m, mptr) gDma0p((pkt),(m),(mptr),0)
|
|
#define gsSPBgRectangle(m, mptr) gsDma0p( (m),(mptr),0)
|
|
#define gSPBgRectCopy(pkt, mptr) gSPBgRectangle((pkt), G_BG_COPY, (mptr))
|
|
#define gsSPBgRectCopy(mptr) gsSPBgRectangle( G_BG_COPY, (mptr))
|
|
#define gSPBgRect1Cyc(pkt, mptr) gSPBgRectangle((pkt), G_BG_1CYC, (mptr))
|
|
#define gsSPBgRect1Cyc(mptr) gsSPBgRectangle( G_BG_1CYC, (mptr))
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* 2D Objects
|
|
*---------------------------------------------------------------------------*/
|
|
#define gSPObjSprite(pkt, mptr) gDma0p((pkt),G_OBJ_SPRITE, (mptr),0)
|
|
#define gsSPObjSprite(mptr) gsDma0p( G_OBJ_SPRITE, (mptr),0)
|
|
#define gSPObjRectangle(pkt, mptr) gDma0p((pkt),G_OBJ_RECTANGLE, (mptr),0)
|
|
#define gsSPObjRectangle(mptr) gsDma0p( G_OBJ_RECTANGLE, (mptr),0)
|
|
#define gSPObjRectangleR(pkt, mptr) gDma0p((pkt),G_OBJ_RECTANGLE_R,(mptr),0)
|
|
#define gsSPObjRectangleR(mptr) gsDma0p( G_OBJ_RECTANGLE_R,(mptr),0)
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* 2D Matrix
|
|
*---------------------------------------------------------------------------*/
|
|
#define gSPObjMatrix(pkt, mptr) gDma1p((pkt),G_OBJ_MOVEMEM,(mptr),0,23)
|
|
#define gsSPObjMatrix(mptr) gsDma1p( G_OBJ_MOVEMEM,(mptr),0,23)
|
|
#define gSPObjSubMatrix(pkt, mptr) gDma1p((pkt),G_OBJ_MOVEMEM,(mptr),2, 7)
|
|
#define gsSPObjSubMatrix(mptr) gsDma1p( G_OBJ_MOVEMEM,(mptr),2, 7)
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* Loading into TMEM
|
|
*---------------------------------------------------------------------------*/
|
|
#define gSPObjLoadTxtr(pkt, tptr) gDma0p((pkt),G_OBJ_LOADTXTR, (tptr),23)
|
|
#define gsSPObjLoadTxtr(tptr) gsDma0p( G_OBJ_LOADTXTR, (tptr),23)
|
|
#define gSPObjLoadTxSprite(pkt, tptr) gDma0p((pkt),G_OBJ_LDTX_SPRITE,(tptr),47)
|
|
#define gsSPObjLoadTxSprite(tptr) gsDma0p( G_OBJ_LDTX_SPRITE,(tptr),47)
|
|
#define gSPObjLoadTxRect(pkt, tptr) gDma0p((pkt),G_OBJ_LDTX_RECT, (tptr),47)
|
|
#define gsSPObjLoadTxRect(tptr) gsDma0p( G_OBJ_LDTX_RECT, (tptr),47)
|
|
#define gSPObjLoadTxRectR(pkt, tptr) gDma0p((pkt),G_OBJ_LDTX_RECT_R,(tptr),47)
|
|
#define gsSPObjLoadTxRectR(tptr) gsDma0p( G_OBJ_LDTX_RECT_R,(tptr),47)
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* Select Display List
|
|
*---------------------------------------------------------------------------*/
|
|
#define gSPSelectDL(pkt, mptr, sid, flag, mask) \
|
|
{ gDma1p((pkt), G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
|
|
gDma1p((pkt), G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_PUSH); }
|
|
#define gsSPSelectDL(mptr, sid, flag, mask) \
|
|
{ gsDma1p(G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
|
|
gsDma1p(G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_PUSH); }
|
|
#define gSPSelectBranchDL(pkt, mptr, sid, flag, mask) \
|
|
{ gDma1p((pkt), G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
|
|
gDma1p((pkt), G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_NOPUSH); }
|
|
#define gsSPSelectBranchDL(mptr, sid, flag, mask) \
|
|
{ gsDma1p(G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
|
|
gsDma1p(G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_NOPUSH); }
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* Set general status
|
|
*---------------------------------------------------------------------------*/
|
|
#define G_MW_GENSTAT 0x08 /* Note that it is the same value of G_MW_FOG */
|
|
|
|
#define gSPSetStatus(pkt, sid, val) \
|
|
gMoveWd((pkt), G_MW_GENSTAT, (sid), (val))
|
|
#define gsSPSetStatus(sid, val) \
|
|
gsMoveWd( G_MW_GENSTAT, (sid), (val))
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
* Set Object Render Mode
|
|
*---------------------------------------------------------------------------*/
|
|
#define G_OBJRM_NOTXCLAMP 0x01
|
|
#define G_OBJRM_XLU 0x02 /* Ignored */
|
|
#define G_OBJRM_ANTIALIAS 0x04 /* Ignored */
|
|
#define G_OBJRM_BILERP 0x08
|
|
#define G_OBJRM_SHRINKSIZE_1 0x10
|
|
#define G_OBJRM_SHRINKSIZE_2 0x20
|
|
#define G_OBJRM_WIDEN 0x40
|
|
|
|
#define gSPObjRenderMode(pkt, mode) gImmp1((pkt),G_OBJ_RENDERMODE,(mode))
|
|
#define gsSPObjRenderMode(mode) gsImmp1( G_OBJ_RENDERMODE,(mode))
|
|
|
|
/*===========================================================================*
|
|
* Render Mode Macro
|
|
*===========================================================================*/
|
|
#define RM_RA_SPRITE(clk) \
|
|
AA_EN | CVG_DST_CLAMP | \
|
|
CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE | \
|
|
GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)
|
|
|
|
#define G_RM_SPRITE G_RM_OPA_SURF
|
|
#define G_RM_SPRITE2 G_RM_OPA_SURF2
|
|
#define G_RM_RA_SPRITE RM_RA_SPRITE(1)
|
|
#define G_RM_RA_SPRITE2 RM_RA_SPRITE(2)
|
|
#define G_RM_AA_SPRITE G_RM_AA_TEX_TERR
|
|
#define G_RM_AA_SPRITE2 G_RM_AA_TEX_TERR2
|
|
#define G_RM_XLU_SPRITE G_RM_XLU_SURF
|
|
#define G_RM_XLU_SPRITE2 G_RM_XLU_SURF2
|
|
#define G_RM_AA_XLU_SPRITE G_RM_AA_XLU_SURF
|
|
#define G_RM_AA_XLU_SPRITE2 G_RM_AA_XLU_SURF2
|
|
|
|
/*===========================================================================*
|
|
* External functions
|
|
*===========================================================================*/
|
|
extern u64 gspS2DEX_fifoTextStart[], gspS2DEX_fifoTextEnd[];
|
|
extern u64 gspS2DEX_fifoDataStart[], gspS2DEX_fifoDataEnd[];
|
|
extern u64 gspS2DEX_fifo_dTextStart[], gspS2DEX_fifo_dTextEnd[];
|
|
extern u64 gspS2DEX_fifo_dDataStart[], gspS2DEX_fifo_dDataEnd[];
|
|
extern u64 gspS2DEX2_fifoTextStart[], gspS2DEX2_fifoTextEnd[];
|
|
extern u64 gspS2DEX2_fifoDataStart[], gspS2DEX2_fifoDataEnd[];
|
|
extern u64 gspS2DEX2_xbusTextStart[], gspS2DEX2_xbusTextEnd[];
|
|
extern u64 gspS2DEX2_xbusDataStart[], gspS2DEX2_xbusDataEnd[];
|
|
extern void guS2DInitBg(uObjBg *bg);
|
|
|
|
#ifdef F3DEX_GBI_2
|
|
# define guS2DEmuBgRect1Cyc guS2D2EmuBgRect1Cyc /*Wrapper*/
|
|
# define guS2DEmuSetScissor guS2D2EmuSetScissor /*Wrapper*/
|
|
extern void guS2D2EmuSetScissor(u32 ulx, u32 uly, u32 lrx, u32 lry, u8 bilerp);
|
|
extern void guS2D2EmuBgRect1Cyc(Gfx **gdl, uObjBg *bg);
|
|
#else
|
|
extern void guS2DEmuSetScissor(u32 ulx, u32 uly, u32 lrx, u32 lry, u8 bilerp);
|
|
extern void guS2DEmuBgRect1Cyc(Gfx **gdl, uObjBg *bg);
|
|
#endif
|
|
|
|
#ifdef _LANGUAGE_C_PLUS_PLUS
|
|
}
|
|
#endif
|
|
#endif /* _GS2DEX_H_ */
|
|
|
|
/*======== End of gs2dex.h ========*/
|