# Regarding incompatibility with versions released before 2004/09/16

## Callback Incompatibilities

With the version released on 2004/10/11, the `NNS_G3dDraw` function can now set one callback function for each SBC instead of only one callback for all SBCs. However, this change caused incompatibility issues with some of the previous versions.

- From the `NNSG3dRS` structure, the cbFunc, cbCmdPtr, cbCmd, and cbTiming members were eliminated. Therefore, if any code that handles these members are used in callbacks, it will not compile.
- The third argument of the `NNS_G3dRenderObjSetCallBack` function was invalidated. The feature that starts up the callback by specifying the SBC address was eliminated.

## How to handle callback codes that cannot be compiled

### When the callback function and generation conditions were changed in the callback

When the cbFunc, cbCmd, and cbTiming members of the `NNSG3dRS` structure are changed in the callback function, replace the code as shown below.

1. Use the `NNS_G3dRSResetCallBack` function in the callback function, and release the callback that is being used.
2. Use the `NNS_G3dRSSetCallBack` function to specify new callback functions and generation conditions.

### When using multiple callbacks

The second and subsequent callbacks cannot be registered with the `NNS_G3dRenderObjSetCallBack` function. To keep the size of the `NNSG3dRenderObj` structure to a minimum, callbacks are now registered by configuring the `NNSG3dRS` structure in the `NNS_G3dDraw` function before rendering.

1. Using the `NNS_G3dRenderObjSetInitFunc` function, configure the `NNSG3dRenderObj` structure with the functions to be executed when the `NNS_G3dDraw` function is executed but before `NNS_G3dDraw` performs rendering.
2. In the set functions, specify the callback function and generation conditions by using `NNS_G3dRSSetCallBack`.

For details, see the sample `callback5`.

## Revision History

2004/10/11 Initial version.

CONFIDENTIAL