The SGADE Documentation

the SGADE The Socrates Gameboy Advance Development Engine

The SGADE is a development library for the Nintendo Gameboy Advance. It's free for all uses and is distributed without guarantees. For more information visit the SGADE page.


Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

Todo List

Class SoBkgFont
Create a variable size extension to this (width only or width/height)

File SoBkgMemManager.c
Add support for rot/scale tiles (from tile modes 2 and 3)

Add support for allocation of tile sets with charbase values other than 0

We could instead split the memory up by assigning ranges to several Tile caches. Each would allocate tiles from their area, and maps would be assigned to a specific tile cache. In this case, the SoBkgMemManager would also be called to allocate memory for map data, instead of hard-coding specific ranges for each map. Map memory would be marked as used with another key value in the RamToRom map (which would be shared among all active Tile caches). This even allows the user to manage the tiles directly if they so choose.

if all tiles fit into memory, we could allow for them to be pre-loaded instead of demand-loaded. This would have to be a flag on the tile cache setup call. It would probably be a better bet to just let the user call into SoTileSet to pre-load the tiles.

Global SoCameraClockwise(SoVector2 *a_AtLeastThreeVertices)
Move backface culling from 2D to 3D.

Global SoCameraProject(SoCamera *a_This, SoVector3 *a_CameraSpaceCoordinate, SoVector2 *a_ScreenSpaceCoordinate)
Optimize

Group SoBkg
Add support for screen sizes other than 256x256 pixels

Change to not do demand load for tiles that are not visible due to windowing.

Add support for mode 1, 2 screens

Global SoBkgSetOffset(u16 a_Index, u16 a_XPos, u16 a_YPos)
consider validating the X/Y offsets against the actual screen size instead of a fixed 512 max

Global SoBkgSetup(u32 a_Index, u32 a_Options)
extend to handle mode 1 & 2 screens

extend to handle 512 pixel screen widths (which use rather odd tile ordering)

Group SoBkgFont
Merge with SoFont module

Global SoBkgMapInit(SoBkgMap *a_This, u16 a_Mode)
add optional lazy/aggressive release mode when using dynamic mode

Global SoCameraDrawMesh(SoCamera *a_This, SoMesh *a_Mesh)
Make this method independent from the SoMode4Rasterizer

Global SoCameraInitialize(SoCamera *a_This)
Fix hardcoded projection plane distance. Make this adjustable.

Group SoEffects
Provide some higher level functions too, or some examples.

Global SoMathFixedSqrt(sofixedpoint a_FixedValue)
Replace with another version of that provides as many bits of accuracy as possible (i.e. no ending shift).

Global SoMatrixMultiply(SoMatrix *a_This, SoMatrix *a_A, SoMatrix *a_B)
Probably worth optimizing in assembly.

Global SoMatrixMultiplyBy(SoMatrix *a_This, SoMatrix *a_Matrix)
Probably worth optimizing in assembly.

Global SoMatrixScale(SoMatrix *a_This, sofixedpoint a_ScaleX, sofixedpoint a_ScaleY, sofixedpoint a_ScaleZ)
Can this even work this simple? Test whether this works.

Global SoMeshGetNumPolygons(SoMesh *a_This)
Inline this function.

Global SoMeshGetNumVertices(SoMesh *a_This)
Inline this function.

Global SoMeshGetPolygon(SoMesh *a_This, u32 a_Index)
Inline this function.

Global SoMeshGetTransform(SoMesh *a_This)
Inline this function.

Global SoMeshGetVertex(SoMesh *a_This, u32 a_Index)
Inline this function.

Global SoMeshSetTexture(SoMesh *a_This, SoImage *a_Texture)
Inline this function.

Group SoMultiPlayer
This module uses a hardcoded timer 3, we should make this user definable.

Global SoSoundPlayDirectSoundA(s8 *a_WaveData, u32 a_Timer, u32 a_DMAChannel, u32 a_Frequency)
Give more detail on this function.

Finish this entire function even. Doh! This was just a test.

Group SoSpriteMemManager
Implement a ref-count for sprite animations, so sprites can share animations.

Global SoTransformToInverseMatrix(SoTransform *a_This, SoMatrix *a_Matrix)
Optimize this method

Global SoTransformToMatrix(SoTransform *a_This, SoMatrix *a_Matrix)
Optimize this method

Copyright 2002 by the SGADE authors. See SoLicense.h or Visit the SGADE page for more information.