Document sprite_transfer.c

This commit is contained in:
Rachel 2025-02-02 19:55:20 -08:00
parent fd2c81fcc7
commit 51d7e9a5dd
2 changed files with 157 additions and 241 deletions

View File

@ -5,27 +5,27 @@
#include "sprite_resource.h"
BOOL SpriteTransfer_RequestChar(const SpriteResource *param0);
void SpriteTransfer_RequestCharList(const SpriteResourceList *param0);
BOOL SpriteTransfer_RequestCharWithHardwareMappingType(const SpriteResource *param0);
BOOL SpriteTransfer_RequestCharAtEnd(const SpriteResource *param0);
void SpriteTransfer_RequestCharListAtEnd(const SpriteResourceList *param0);
BOOL SpriteTransfer_RequestCharAtEndWithHardwareMappingType(const SpriteResource *param0);
void SpriteTransfer_ReplaceCharData(const SpriteResource *param0, const SpriteResource *param1);
void SpriteTransfer_RetransferCharData(const SpriteResource *param0);
void SpriteTransfer_ResetCharTransfer(SpriteResource *param0);
void SpriteTransfer_ResetCharTransferList(SpriteResourceList *param0);
NNSG2dImageProxy *SpriteTransfer_GetImageProxy(const SpriteResource *param0);
NNSG2dImageProxy *SpriteTransfer_GetCellTransferProxy(const SpriteResource *param0, const SpriteResource *param1);
void SpriteTransfer_DeleteCharTransfer(const NNSG2dImageProxy *param0);
BOOL SpriteTransfer_RequestPlttWholeRange(const SpriteResource *param0);
void SpriteTransfer_RequestPlttWholeRangeList(const SpriteResourceList *param0);
BOOL SpriteTransfer_RequestPlttFreeSpace(const SpriteResource *param0);
void SpriteTransfer_RequestPlttFreeSpaceList(const SpriteResourceList *param0);
void SpriteTransfer_ReplacePlttData(const SpriteResource *param0);
void SpriteTransfer_ResetPlttTransfer(SpriteResource *param0);
void SpriteTransfer_ResetPlttTransferList(SpriteResourceList *param0);
const NNSG2dImagePaletteProxy *SpriteTransfer_GetPaletteProxy(const SpriteResource *param0, NNSG2dImageProxy *param1);
u32 SpriteTransfer_GetPlttOffset(const SpriteResource *param0, NNS_G2D_VRAM_TYPE param1);
BOOL SpriteTransfer_RequestChar(const SpriteResource *resource);
void SpriteTransfer_RequestCharList(const SpriteResourceList *resourceList);
BOOL SpriteTransfer_RequestCharWithHardwareMappingType(const SpriteResource *resource);
BOOL SpriteTransfer_RequestCharAtEnd(const SpriteResource *resource);
void SpriteTransfer_RequestCharListAtEnd(const SpriteResourceList *resourceList);
BOOL SpriteTransfer_RequestCharAtEndWithHardwareMappingType(const SpriteResource *resource);
void SpriteTransfer_ReplaceCharData(const SpriteResource *dst, const SpriteResource *src);
void SpriteTransfer_RetransferCharData(const SpriteResource *resource);
void SpriteTransfer_ResetCharTransfer(SpriteResource *resource);
void SpriteTransfer_ResetCharTransferList(SpriteResourceList *resourceList);
NNSG2dImageProxy *SpriteTransfer_GetImageProxy(const SpriteResource *resource);
NNSG2dImageProxy *SpriteTransfer_GetCellTransferProxy(const SpriteResource *charResource, const SpriteResource *cellResource);
void SpriteTransfer_DeleteCharTransfer(const NNSG2dImageProxy *imageProxy);
BOOL SpriteTransfer_RequestPlttWholeRange(const SpriteResource *resource);
void SpriteTransfer_RequestPlttWholeRangeList(const SpriteResourceList *resourceList);
BOOL SpriteTransfer_RequestPlttFreeSpace(const SpriteResource *resource);
void SpriteTransfer_RequestPlttFreeSpaceList(const SpriteResourceList *resourceList);
void SpriteTransfer_ReplacePlttData(const SpriteResource *resource);
void SpriteTransfer_ResetPlttTransfer(SpriteResource *resource);
void SpriteTransfer_ResetPlttTransferList(SpriteResourceList *resourceList);
const NNSG2dImagePaletteProxy *SpriteTransfer_GetPaletteProxy(const SpriteResource *resource, NNSG2dImageProxy *imageProxy);
u32 SpriteTransfer_GetPlttOffset(const SpriteResource *resource, NNS_G2D_VRAM_TYPE vramType);
#endif // POKEPLATINUM_SPRITE_TRANSFER_H

View File

@ -3,318 +3,234 @@
#include <nitro.h>
#include <string.h>
#include "nnsys/g2d/fmt/g2d_Cell_data.h"
#include "nnsys/g2d/g2d_Image.h"
#include "char_transfer.h"
#include "pltt_transfer.h"
#include "sprite_resource.h"
BOOL SpriteTransfer_RequestChar(const SpriteResource *param0)
BOOL SpriteTransfer_RequestChar(const SpriteResource *resource)
{
CharTransferTaskTemplate v0;
GF_ASSERT(resource);
GF_ASSERT(SpriteResource_GetType(resource) == SPRITE_RESOURCE_TILES);
GF_ASSERT(param0);
GF_ASSERT(SpriteResource_GetType(param0) == 0);
v0.data = SpriteResource_GetTileData(param0);
v0.vramType = SpriteResource_GetVRAMType(param0);
v0.resourceID = SpriteResource_GetID(param0);
v0.atEnd = FALSE;
return CharTransfer_Request(&v0);
CharTransferTaskTemplate template;
template.data = SpriteResource_GetTileData(resource);
template.vramType = SpriteResource_GetVRAMType(resource);
template.resourceID = SpriteResource_GetID(resource);
template.atEnd = FALSE;
return CharTransfer_Request(&template);
}
void SpriteTransfer_RequestCharList(const SpriteResourceList *param0)
void SpriteTransfer_RequestCharList(const SpriteResourceList *resourceList)
{
int v0;
BOOL v1;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->capacity; v0++) {
if (param0->resources[v0]) {
v1 = SpriteTransfer_RequestChar(param0->resources[v0]);
GF_ASSERT(v1);
GF_ASSERT(resourceList);
for (int i = 0; i < resourceList->capacity; i++) {
if (resourceList->resources[i]) {
GF_ASSERT(SpriteTransfer_RequestChar(resourceList->resources[i]));
}
}
}
BOOL SpriteTransfer_RequestCharWithHardwareMappingType(const SpriteResource *param0)
BOOL SpriteTransfer_RequestCharWithHardwareMappingType(const SpriteResource *resource)
{
CharTransferTaskTemplate v0;
GF_ASSERT(resource);
GF_ASSERT(SpriteResource_GetType(resource) == SPRITE_RESOURCE_TILES);
GF_ASSERT(param0);
GF_ASSERT(SpriteResource_GetType(param0) == 0);
v0.data = SpriteResource_GetTileData(param0);
v0.vramType = SpriteResource_GetVRAMType(param0);
v0.resourceID = SpriteResource_GetID(param0);
v0.atEnd = FALSE;
return CharTransfer_RequestWithHardwareMappingType(&v0);
CharTransferTaskTemplate template;
template.data = SpriteResource_GetTileData(resource);
template.vramType = SpriteResource_GetVRAMType(resource);
template.resourceID = SpriteResource_GetID(resource);
template.atEnd = FALSE;
return CharTransfer_RequestWithHardwareMappingType(&template);
}
BOOL SpriteTransfer_RequestCharAtEnd(const SpriteResource *param0)
BOOL SpriteTransfer_RequestCharAtEnd(const SpriteResource *resource)
{
CharTransferTaskTemplate v0;
GF_ASSERT(resource);
GF_ASSERT(SpriteResource_GetType(resource) == SPRITE_RESOURCE_TILES);
GF_ASSERT(param0);
GF_ASSERT(SpriteResource_GetType(param0) == 0);
v0.data = SpriteResource_GetTileData(param0);
v0.vramType = SpriteResource_GetVRAMType(param0);
v0.resourceID = SpriteResource_GetID(param0);
v0.atEnd = TRUE;
return CharTransfer_Request(&v0);
CharTransferTaskTemplate template;
template.data = SpriteResource_GetTileData(resource);
template.vramType = SpriteResource_GetVRAMType(resource);
template.resourceID = SpriteResource_GetID(resource);
template.atEnd = TRUE;
return CharTransfer_Request(&template);
}
void SpriteTransfer_RequestCharListAtEnd(const SpriteResourceList *param0)
void SpriteTransfer_RequestCharListAtEnd(const SpriteResourceList *resourceList)
{
int v0;
BOOL v1;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->capacity; v0++) {
if (param0->resources[v0]) {
v1 = SpriteTransfer_RequestCharAtEnd(param0->resources[v0]);
GF_ASSERT(v1);
GF_ASSERT(resourceList);
for (int i = 0; i < resourceList->capacity; i++) {
if (resourceList->resources[i]) {
GF_ASSERT(SpriteTransfer_RequestCharAtEnd(resourceList->resources[i]));
}
}
}
BOOL SpriteTransfer_RequestCharAtEndWithHardwareMappingType(const SpriteResource *param0)
BOOL SpriteTransfer_RequestCharAtEndWithHardwareMappingType(const SpriteResource *resource)
{
CharTransferTaskTemplate v0;
GF_ASSERT(resource);
GF_ASSERT(SpriteResource_GetType(resource) == SPRITE_RESOURCE_TILES);
GF_ASSERT(param0);
GF_ASSERT(SpriteResource_GetType(param0) == 0);
v0.data = SpriteResource_GetTileData(param0);
v0.vramType = SpriteResource_GetVRAMType(param0);
v0.resourceID = SpriteResource_GetID(param0);
v0.atEnd = TRUE;
return CharTransfer_RequestWithHardwareMappingType(&v0);
CharTransferTaskTemplate template;
template.data = SpriteResource_GetTileData(resource);
template.vramType = SpriteResource_GetVRAMType(resource);
template.resourceID = SpriteResource_GetID(resource);
template.atEnd = TRUE;
return CharTransfer_RequestWithHardwareMappingType(&template);
}
void SpriteTransfer_ReplaceCharData(const SpriteResource *param0, const SpriteResource *param1)
void SpriteTransfer_ReplaceCharData(const SpriteResource *dstResource, const SpriteResource *srcResource)
{
int v0;
NNSG2dCharacterData *v1;
GF_ASSERT(param0);
GF_ASSERT(param1);
v0 = SpriteResource_GetID(param0);
v1 = SpriteResource_GetTileData(param1);
CharTransfer_ReplaceCharData(v0, v1);
GF_ASSERT(dstResource);
GF_ASSERT(srcResource);
CharTransfer_ReplaceCharData(SpriteResource_GetID(dstResource), SpriteResource_GetTileData(srcResource));
}
void SpriteTransfer_RetransferCharData(const SpriteResource *param0)
void SpriteTransfer_RetransferCharData(const SpriteResource *resource)
{
int v0;
NNSG2dCharacterData *v1;
GF_ASSERT(param0);
v0 = SpriteResource_GetID(param0);
v1 = SpriteResource_GetTileData(param0);
CharTransfer_ReplaceCharData(v0, v1);
GF_ASSERT(resource);
CharTransfer_ReplaceCharData(SpriteResource_GetID(resource), SpriteResource_GetTileData(resource));
}
void SpriteTransfer_ResetCharTransfer(SpriteResource *param0)
void SpriteTransfer_ResetCharTransfer(SpriteResource *resource)
{
int v0;
GF_ASSERT(param0);
GF_ASSERT(SpriteResource_GetType(param0) == 0);
v0 = SpriteResource_GetID(param0);
CharTransfer_ResetTask(v0);
GF_ASSERT(resource);
GF_ASSERT(SpriteResource_GetType(resource) == SPRITE_RESOURCE_TILES);
CharTransfer_ResetTask(SpriteResource_GetID(resource));
}
void SpriteTransfer_ResetCharTransferList(SpriteResourceList *param0)
void SpriteTransfer_ResetCharTransferList(SpriteResourceList *resourceList)
{
int v0;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->capacity; v0++) {
if (param0->resources[v0]) {
SpriteTransfer_ResetCharTransfer(param0->resources[v0]);
GF_ASSERT(resourceList);
for (int i = 0; i < resourceList->capacity; i++) {
if (resourceList->resources[i]) {
SpriteTransfer_ResetCharTransfer(resourceList->resources[i]);
}
}
}
NNSG2dImageProxy *SpriteTransfer_GetImageProxy(const SpriteResource *param0)
NNSG2dImageProxy *SpriteTransfer_GetImageProxy(const SpriteResource *resource)
{
int v0;
GF_ASSERT(param0);
GF_ASSERT(SpriteResource_GetType(param0) == 0);
v0 = SpriteResource_GetID(param0);
return CharTransfer_GetImageProxy(v0);
GF_ASSERT(resource);
GF_ASSERT(SpriteResource_GetType(resource) == SPRITE_RESOURCE_TILES);
return CharTransfer_GetImageProxy(SpriteResource_GetID(resource));
}
NNSG2dImageProxy *SpriteTransfer_GetCellTransferProxy(const SpriteResource *param0, const SpriteResource *param1)
NNSG2dImageProxy *SpriteTransfer_GetCellTransferProxy(const SpriteResource *charResource, const SpriteResource *cellResource)
{
int v0;
NNSG2dCellDataBank *v1;
NNSG2dImageProxy *v2;
GF_ASSERT(charResource);
GF_ASSERT(SpriteResource_GetType(charResource) == SPRITE_RESOURCE_TILES);
GF_ASSERT(cellResource);
GF_ASSERT(SpriteResource_GetType(cellResource) == SPRITE_RESOURCE_SPRITE);
GF_ASSERT(param0);
GF_ASSERT(SpriteResource_GetType(param0) == 0);
GF_ASSERT(param1);
GF_ASSERT(SpriteResource_GetType(param1) == 2);
int resourceID = SpriteResource_GetID(charResource);
NNSG2dCellDataBank *cellData = SpriteResource_GetSpriteData(cellResource);
NNSG2dImageProxy *imageProxy = CharTransfer_ResizeTaskRange(resourceID, cellData->pVramTransferData->szByteMax);
v0 = SpriteResource_GetID(param0);
v1 = SpriteResource_GetSpriteData(param1);
v2 = CharTransfer_ResizeTaskRange(v0, v1->pVramTransferData->szByteMax);
if (v2 == NULL) {
NNSG2dImageProxy *v3;
v3 = CharTransfer_GetImageProxy(v0);
v2 = CharTransfer_CopyTask(v3);
if (imageProxy == NULL) {
imageProxy = CharTransfer_CopyTask(CharTransfer_GetImageProxy(resourceID));
}
return v2;
return imageProxy;
}
void SpriteTransfer_DeleteCharTransfer(const NNSG2dImageProxy *param0)
void SpriteTransfer_DeleteCharTransfer(const NNSG2dImageProxy *imageProxy)
{
GF_ASSERT(param0);
CharTransfer_DeleteTask(param0);
GF_ASSERT(imageProxy);
CharTransfer_DeleteTask(imageProxy);
}
BOOL SpriteTransfer_RequestPlttWholeRange(const SpriteResource *param0)
BOOL SpriteTransfer_RequestPlttWholeRange(const SpriteResource *resource)
{
PlttTransferTaskTemplate v0;
GF_ASSERT(resource);
GF_ASSERT(SpriteResource_GetType(resource) == SPRITE_RESOURCE_PALETTE);
GF_ASSERT(param0);
GF_ASSERT(SpriteResource_GetType(param0) == 1);
v0.data = SpriteResource_GetPaletteFade(param0);
v0.vramType = SpriteResource_GetVRAMType(param0);
v0.resourceID = SpriteResource_GetID(param0);
v0.plttIndex = SpriteResource_GetPaletteIndex(param0);
return PlttTransfer_RequestWholeRange(&v0);
PlttTransferTaskTemplate template;
template.data = SpriteResource_GetPaletteFade(resource);
template.vramType = SpriteResource_GetVRAMType(resource);
template.resourceID = SpriteResource_GetID(resource);
template.plttIndex = SpriteResource_GetPaletteIndex(resource);
return PlttTransfer_RequestWholeRange(&template);
}
void SpriteTransfer_RequestPlttWholeRangeList(const SpriteResourceList *param0)
void SpriteTransfer_RequestPlttWholeRangeList(const SpriteResourceList *resourceList)
{
int v0;
BOOL v1;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->capacity; v0++) {
if (param0->resources[v0]) {
v1 = SpriteTransfer_RequestPlttWholeRange(param0->resources[v0]);
GF_ASSERT(v1);
GF_ASSERT(resourceList);
for (int i = 0; i < resourceList->capacity; i++) {
if (resourceList->resources[i]) {
GF_ASSERT(SpriteTransfer_RequestPlttWholeRange(resourceList->resources[i]));
}
}
}
BOOL SpriteTransfer_RequestPlttFreeSpace(const SpriteResource *param0)
BOOL SpriteTransfer_RequestPlttFreeSpace(const SpriteResource *resource)
{
PlttTransferTaskTemplate v0;
GF_ASSERT(resource);
GF_ASSERT(SpriteResource_GetType(resource) == SPRITE_RESOURCE_PALETTE);
GF_ASSERT(param0);
GF_ASSERT(SpriteResource_GetType(param0) == 1);
v0.data = SpriteResource_GetPaletteFade(param0);
v0.vramType = SpriteResource_GetVRAMType(param0);
v0.resourceID = SpriteResource_GetID(param0);
v0.plttIndex = SpriteResource_GetPaletteIndex(param0);
return PlttTransfer_RequestFreeSpace(&v0);
PlttTransferTaskTemplate template;
template.data = SpriteResource_GetPaletteFade(resource);
template.vramType = SpriteResource_GetVRAMType(resource);
template.resourceID = SpriteResource_GetID(resource);
template.plttIndex = SpriteResource_GetPaletteIndex(resource);
return PlttTransfer_RequestFreeSpace(&template);
}
void SpriteTransfer_RequestPlttFreeSpaceList(const SpriteResourceList *param0)
void SpriteTransfer_RequestPlttFreeSpaceList(const SpriteResourceList *resourceList)
{
int v0;
BOOL v1;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->capacity; v0++) {
if (param0->resources[v0]) {
v1 = SpriteTransfer_RequestPlttFreeSpace(param0->resources[v0]);
GF_ASSERT(v1);
GF_ASSERT(resourceList);
for (int i = 0; i < resourceList->capacity; i++) {
if (resourceList->resources[i]) {
GF_ASSERT(SpriteTransfer_RequestPlttFreeSpace(resourceList->resources[i]));
}
}
}
void SpriteTransfer_ReplacePlttData(const SpriteResource *param0)
void SpriteTransfer_ReplacePlttData(const SpriteResource *resource)
{
NNSG2dPaletteData *v0;
int v1;
int v2;
GF_ASSERT(param0);
v1 = SpriteResource_GetID(param0);
v0 = SpriteResource_GetPaletteFade(param0);
PlttTransfer_ReplacePlttData(v1, v0);
GF_ASSERT(resource);
PlttTransfer_ReplacePlttData(SpriteResource_GetID(resource), SpriteResource_GetPaletteFade(resource));
}
void SpriteTransfer_ResetPlttTransfer(SpriteResource *param0)
void SpriteTransfer_ResetPlttTransfer(SpriteResource *resource)
{
int v0;
GF_ASSERT(param0);
GF_ASSERT(SpriteResource_GetType(param0) == 1);
v0 = SpriteResource_GetID(param0);
PlttTransfer_ResetTask(v0);
GF_ASSERT(resource);
GF_ASSERT(SpriteResource_GetType(resource) == SPRITE_RESOURCE_PALETTE);
PlttTransfer_ResetTask(SpriteResource_GetID(resource));
}
void SpriteTransfer_ResetPlttTransferList(SpriteResourceList *param0)
void SpriteTransfer_ResetPlttTransferList(SpriteResourceList *resourceList)
{
int v0;
GF_ASSERT(param0);
for (v0 = 0; v0 < param0->capacity; v0++) {
if (param0->resources[v0]) {
SpriteTransfer_ResetPlttTransfer(param0->resources[v0]);
GF_ASSERT(resourceList);
for (int i = 0; i < resourceList->capacity; i++) {
if (resourceList->resources[i]) {
SpriteTransfer_ResetPlttTransfer(resourceList->resources[i]);
}
}
}
const NNSG2dImagePaletteProxy *SpriteTransfer_GetPaletteProxy(const SpriteResource *param0, NNSG2dImageProxy *param1)
const NNSG2dImagePaletteProxy *SpriteTransfer_GetPaletteProxy(const SpriteResource *resource, NNSG2dImageProxy *imageProxy)
{
int v0;
GF_ASSERT(resource);
GF_ASSERT(SpriteResource_GetType(resource) == SPRITE_RESOURCE_PALETTE);
GF_ASSERT(param0);
GF_ASSERT(SpriteResource_GetType(param0) == 1);
v0 = SpriteResource_GetID(param0);
if (param1) {
return PlttTransfer_ToggleExtPalette(v0, param1);
int resourceID = SpriteResource_GetID(resource);
if (imageProxy) {
return PlttTransfer_ToggleExtPalette(resourceID, imageProxy);
}
return PlttTransfer_GetPaletteProxy(v0);
return PlttTransfer_GetPaletteProxy(resourceID);
}
u32 SpriteTransfer_GetPlttOffset(const SpriteResource *param0, NNS_G2D_VRAM_TYPE param1)
u32 SpriteTransfer_GetPlttOffset(const SpriteResource *resource, NNS_G2D_VRAM_TYPE vramType)
{
int v0;
const NNSG2dImagePaletteProxy *v1;
v1 = SpriteTransfer_GetPaletteProxy(param0, NULL);
v0 = NNS_G2dGetImagePaletteLocation(v1, param1);
if (v0 != (NNS_G2D_VRAM_ADDR_NOT_INITIALIZED)) {
v0 /= 32;
int offset = NNS_G2dGetImagePaletteLocation(SpriteTransfer_GetPaletteProxy(resource, NULL), vramType);
if (offset != NNS_G2D_VRAM_ADDR_NOT_INITIALIZED) {
offset /= 32; // Does not match with PALETTE_SIZE_BYTES, for some reason.
}
return v0;
return offset;
}