Jump to content

libnds Updated

Recommended Posts

There have been some fairly major updates to libnds this time round. These include gabebear's gl patch, improvements to the exception handler and interrupt dispatcher as well as some housekeeping and general tidying.

Applied gabebear patch # 1632896

fix gluPickMatrix()

- no float / f32 version because all the parameters will always be regular ints

- it actually works now


fix gluFrustrumf32() and gluFrustum()

- rename to glFrustrum because this is a GL function, not GLU (I'm breaking stuff...)

- no longer changes matrix mode to projection (it's useful for more than projection)

- multiplies instead of loads


fix glOrthof32()

- no longer changes matrix mode to projection (it's useful for more than projection)

- multiplies instead of loads


fix glGetFixed()

- correctly waits for graphics engine to stop before getting any matrix

- added ability to get projection and modelview matrices

- fixed projection matrix get (it was grabbing modelview)

- getting projection or position matrices now uses the matrix stack to preserve the other matrix.


Updated the glTexCoord2f() to pull texture size from state...texture sizes other than 128x128 should now work with the floating point version.


Added gluPickMatrix... (untested)



The helper macros for VRAM mapping have been updated and extended, leading zeroes are now used on macros which include addresses in their naming schemes. The default mappings now reflect sequential use of VRAM banks.


The default exception handler has had some small improvements. The program counter is now saved properly on entry to the handler.


The interrupt dispatcher has now returned to the older method of acknowledging before entering the user handler. The convoluted method was based on a misunderstanding of a situation where it appeared user data was lost if the interrupt flag was cleared first.


The Personal Data struct has been extended with known values from gbatek.


Added DS motion card functionality to libnds!


Anonymous structs and unions have now been named for use with -std=c99 by request.


The bus owner functions have been changed to static inline - setCartOwner, setCardOwner and setBusOwners.


In our ongoing attempt to bring register naming in line with gbatek WAIT_CR changes to REG_EXEMEMCNT/REG_EXEMEMSTAT and POWER_CR changes to REG_POWERCNT. The old names have been moved to nds/registers_alt.h.


registers_alt.h has been updated to avoid multiple definition warnings when included. Many of the old names are now defined to their new names here.


The timer macros now do not enable the timers by default. TIMER_ENABLE should be set manually.


The bogus fixed types have been removed from libnds due to problems with some C++ standard libraries. Fixed point numbers are ints which are treated specially by the programmer, define your own types if you really must.

Source / Download

Link to comment
Share on other sites

  • Robert locked this topic
This topic is now closed to further replies.
  • Create New...