oaf-boost/source/arm11/gpu_cmd_lists.c

889 lines
29 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* This file is part of open_agb_firm
* Copyright (C) 2022 profi200
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "types.h"
#include "drivers/cache.h"
// 360x240 without scaling, no filter.
alignas(16) u8 gbaGpuInitList[1136] =
{
// 0x01, 0x00, 0x00, 0x00, 0x10, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x06, 0x03,
// 0x1C, 0x01, 0x2F, 0x80, 0x00, 0x00, 0x03, 0x03, 0xF0, 0xF0, 0x18, 0x01,
// 0xF0, 0xF0, 0x18, 0x01, 0x6E, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00,
// 0x16, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x17, 0x01, 0x0F, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x1B, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00,
// 0x12, 0x01, 0x3F, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
// 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x45, 0x00,
// 0x41, 0x00, 0x3F, 0x80, 0x10, 0x11, 0x11, 0x38, 0x00, 0x90, 0x46, 0x00,
// 0x14, 0xAE, 0x47, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x68, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x2F, 0x80,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x29, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x02, 0x03, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x44, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0xCB, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xCC, 0x02, 0x7F, 0x00,
// 0x01, 0xF0, 0x07, 0x4E, 0x02, 0x08, 0x02, 0x08, 0x03, 0x18, 0x02, 0x08,
// 0x04, 0x28, 0x02, 0x08, 0x05, 0x38, 0x02, 0x08, 0x06, 0x10, 0x20, 0x4C,
// 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
// 0xBF, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x02, 0x0F, 0x00,
// 0x6E, 0x03, 0x00, 0x00, 0xD6, 0x02, 0x6F, 0x00, 0xA1, 0x0A, 0x00, 0x00,
// 0x68, 0xC3, 0x06, 0x00, 0x64, 0xC3, 0x06, 0x00, 0x62, 0xC3, 0x06, 0x00,
// 0x61, 0xC3, 0x06, 0x00, 0x6F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F,
// 0xBA, 0x02, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBD, 0x02, 0x0F, 0x00,
// 0x01, 0x00, 0x00, 0x00, 0x4A, 0x02, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00,
// 0x51, 0x02, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5E, 0x02, 0x01, 0x00,
// 0x02, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x7F, 0x80, 0x00, 0x01, 0x02, 0x03,
// 0x0C, 0x0D, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
// 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
// 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x64, 0x00, 0x0F, 0x00,
// 0x01, 0x01, 0x00, 0x00, 0x6F, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x29, 0x02, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x02, 0x0F, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x54, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xA0,
// 0x89, 0x02, 0x0F, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x01, 0x02, 0x1F, 0x80,
// 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xA0,
// 0xB9, 0x02, 0x0B, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x02, 0x0F, 0x00,
// 0x10, 0x00, 0x00, 0x00, 0xBB, 0x02, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x0F, 0x00,
// 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xBF, 0x00,
// 0x4D, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x10, 0x00, 0x00, 0x00, 0x04, 0x01, 0x3F, 0x80, 0x10, 0x00, 0x00, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x10, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x26, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x03, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x76, 0x76, 0x01, 0x01, 0x0F, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x0F, 0x00, 0x00, 0x01, 0xE4, 0x00,
// 0x00, 0x01, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x80, 0x30, 0x01, 0x0F, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x18, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x01, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x81, 0x00, 0x4F, 0x80, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, // Last 4 bytes: GPUREG_TEXUNIT0_PARAM.
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x01, 0x00, 0x00, 0x00, // Last 4 bytes: GPUREG_TEXUNIT0_TYPE.
// 0x8E, 0x00, 0x0F, 0x00, 0x01, 0x10, 0x01, 0x00, 0x80, 0x00, 0x0B, 0x00,
// 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
// 0x8B, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00,
// 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0xE1, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0x4F, 0x80,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
// 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0xC8, 0x00, 0x4F, 0x80,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
// 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0xD0, 0x00, 0x4F, 0x80,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
// 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0xD8, 0x00, 0x4F, 0x80,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
// 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x4F, 0x80,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
// 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0xF8, 0x00, 0x4F, 0x80,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
// 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0xC0, 0x02, 0x3F, 0x80,
// 0xBF, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x02, 0x0F, 0x00,
// 0x00, 0x00, 0x80, 0xBF, 0xC1, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x88, 0x88, 0x08, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xD7, 0xA3, 0xBB,
// 0x00, 0x00, 0x80, 0xBF, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x00, 0x00, 0xFF, 0x7F, 0xB0, 0x02, 0x0F, 0x00, 0x00, 0x01, 0x00, 0x00,
// 0x5E, 0x02, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5F, 0x02, 0x0F, 0x00,
// 0x00, 0x00, 0x00, 0x80, 0x27, 0x02, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00,
// 0x53, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x02, 0x01, 0x00,
// 0x0F, 0x00, 0x00, 0x00, 0x32, 0x02, 0x0F, 0x00, 0x3E, 0x00, 0x00, 0x3F,
// 0x33, 0x02, 0x2F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x43, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0x2F, 0x80, 0x10, 0x3E, 0x00, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3F, 0x33, 0x02, 0x2F, 0x80,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x33, 0x02, 0x2F, 0x80, 0x10, 0x3E, 0x00, 0x00, 0x00, 0x68, 0x3E, 0x00,
// 0x3E, 0x00, 0x00, 0x3F, 0x33, 0x02, 0x2F, 0x80, 0xE0, 0x46, 0x00, 0x00,
// 0x00, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0x2F, 0x80,
// 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3F,
// 0x33, 0x02, 0x2F, 0x80, 0xE0, 0x46, 0x00, 0x00, 0x00, 0x7C, 0x47, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0x2F, 0x80, 0x00, 0x3F, 0x00, 0x00,
// 0x00, 0x68, 0x3E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x02, 0x01, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x53, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
// 0x31, 0x02, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x01, 0x0F, 0x00,
// 0x01, 0x00, 0x00, 0x00, 0x10, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00,
// 0x63, 0x00, 0x0F, 0x00, 0x78, 0x56, 0x34, 0x12, 0x10, 0x00, 0x0F, 0x00,
// 0x78, 0x56, 0x34, 0x12, 0x10, 0x00, 0x0F, 0x00
// 1 @0000 GPUREG_FRAMEBUFFER_INVALIDATE 1
0x01, 0x00, 0x00, 0x00,
0x10, 0x01, 0x0f, 0x00,
// 2 @0008 GPUREG_DEPTHBUFFER_LOC 3060000,3030000,118f0f0
0x00, 0x00, 0x06, 0x03,
0x1c, 0x01, 0x2f, 0x80,
0x00, 0x00, 0x03, 0x03,
0xf0, 0xf0, 0x18, 0x01,
// 3 @0024 GPUREG_RENDERBUF_DIM 118f0f0
0xf0, 0xf0, 0x18, 0x01,
0x6e, 0x00, 0x0f, 0x00,
// 4 @0032 GPUREG_DEPTHBUFFER_FORMAT 3
0x03, 0x00, 0x00, 0x00,
0x16, 0x01, 0x0f, 0x00,
// 5 @0040 GPUREG_COLORBUFFER_FORMAT 10001
0x01, 0x00, 0x01, 0x00,
0x17, 0x01, 0x0f, 0x00,
// 6 @0048 GPUREG_FRAMEBUFFER_BLOCK32 0
0x00, 0x00, 0x00, 0x00,
0x1b, 0x01, 0x0f, 0x00,
// 7 @0056 GPUREG_COLORBUFFER_READ f,f,3,3
0x0f, 0x00, 0x00, 0x00,
0x12, 0x01, 0x3f, 0x80,
0x0f, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 8 @0080 GPUREG_VIEWPORT_WIDTH 45e000,38111110,469000,3747ae14
0x00, 0xe0, 0x45, 0x00,
0x41, 0x00, 0x3f, 0x80,
0x10, 0x11, 0x11, 0x38,
0x00, 0x90, 0x46, 0x00,
0x14, 0xae, 0x47, 0x37,
0x00, 0x00, 0x00, 0x00,
// 9 @0104 GPUREG_VIEWPORT_XY 0
0x00, 0x00, 0x00, 0x00,
0x68, 0x00, 0x0f, 0x00,
// 10 @0112 GPUREG_SCISSORTEST_MODE 0,0,0
0x00, 0x00, 0x00, 0x00,
0x65, 0x00, 0x2f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 11 @0128 GPUREG_GEOSTAGE_CONFIG 0
0x00, 0x00, 0x00, 0x00,
0x29, 0x02, 0x03, 0x00,
// 12 @0136 GPUREG_GEOSTAGE_CONFIG2 0
0x00, 0x00, 0x00, 0x00,
0x53, 0x02, 0x03, 0x00,
// 13 @0144 GPUREG_VSH_COM_MODE 0
0x00, 0x00, 0x00, 0x00,
0x44, 0x02, 0x01, 0x00,
// 14 @0152 GPUREG_VSH_CODETRANSFER_INDEX 0
0x00, 0x00, 0x00, 0x00,
0xcb, 0x02, 0x0f, 0x00,
// 15 @0160 GPUREG_VSH_CODETRANSFER_DATA0 4e000000,4e07f001,8020802,8021803,8022804,8023805,4c201006,88000000
0x00, 0x00, 0x00, 0x4e,
0xcc, 0x02, 0x7f, 0x00,
0x01, 0xf0, 0x07, 0x4e,
0x02, 0x08, 0x02, 0x08,
0x03, 0x18, 0x02, 0x08,
0x04, 0x28, 0x02, 0x08,
0x05, 0x38, 0x02, 0x08,
0x06, 0x10, 0x20, 0x4c,
0x00, 0x00, 0x00, 0x88,
0x00, 0x00, 0x00, 0x00,
// 16 @0200 GPUREG_VSH_CODETRANSFER_END 1
0x01, 0x00, 0x00, 0x00,
0xbf, 0x02, 0x0f, 0x00,
// 17 @0208 GPUREG_VSH_OPDESCS_INDEX 0
0x00, 0x00, 0x00, 0x00,
0xd5, 0x02, 0x0f, 0x00,
// 18 @0216 GPUREG_VSH_OPDESCS_DATA0 36e,aa1,6c368,6c364,6c362,6c361,36f
0x6e, 0x03, 0x00, 0x00,
0xd6, 0x02, 0x6f, 0x00,
0xa1, 0x0a, 0x00, 0x00,
0x68, 0xc3, 0x06, 0x00,
0x64, 0xc3, 0x06, 0x00,
0x62, 0xc3, 0x06, 0x00,
0x61, 0xc3, 0x06, 0x00,
0x6f, 0x03, 0x00, 0x00,
// 19 @0248 GPUREG_VSH_ENTRYPOINT 7fff0000
0x00, 0x00, 0xff, 0x7f,
0xba, 0x02, 0x0f, 0x00,
// 20 @0256 GPUREG_VSH_OUTMAP_MASK 3
0x03, 0x00, 0x00, 0x00,
0xbd, 0x02, 0x0f, 0x00,
// 21 @0264 GPUREG_VSH_OUTMAP_TOTAL1 1
0x01, 0x00, 0x00, 0x00,
0x4a, 0x02, 0x0f, 0x00,
// 22 @0272 GPUREG_VSH_OUTMAP_TOTAL2 1
0x01, 0x00, 0x00, 0x00,
0x51, 0x02, 0x0f, 0x00,
// 23 @0280 GPUREG_PRIMITIVE_CONFIG 1
0x01, 0x00, 0x00, 0x00,
0x5e, 0x02, 0x01, 0x00,
// 24 @0288 GPUREG_SH_OUTMAP_TOTAL 2,3020100,1f1f0d0c,1f1f1f1f,1f1f1f1f,1f1f1f1f,1f1f1f1f,1f1f1f1f
0x02, 0x00, 0x00, 0x00,
0x4f, 0x00, 0x7f, 0x80,
0x00, 0x01, 0x02, 0x03,
0x0c, 0x0d, 0x1f, 0x1f,
0x1f, 0x1f, 0x1f, 0x1f,
0x1f, 0x1f, 0x1f, 0x1f,
0x1f, 0x1f, 0x1f, 0x1f,
0x1f, 0x1f, 0x1f, 0x1f,
0x1f, 0x1f, 0x1f, 0x1f,
0x00, 0x00, 0x00, 0x00,
// 25 @0328 GPUREG_SH_OUTATTR_MODE 1
0x01, 0x00, 0x00, 0x00,
0x64, 0x00, 0x0f, 0x00,
// 26 @0336 GPUREG_SH_OUTATTR_CLOCK 101
0x01, 0x01, 0x00, 0x00,
0x6f, 0x00, 0x0f, 0x00,
// 27 @0344 GPUREG_GEOSTAGE_CONFIG 0
0x00, 0x00, 0x00, 0x00,
0x29, 0x02, 0x0a, 0x00,
// 28 @0352 GPUREG_GSH_MISC0 0
0x00, 0x00, 0x00, 0x00,
0x52, 0x02, 0x0f, 0x00,
// 29 @0360 GPUREG_GSH_MISC1 0
0x00, 0x00, 0x00, 0x00,
0x54, 0x02, 0x0f, 0x00,
// 30 @0368 GPUREG_GSH_INPUTBUFFER_CONFIG a0000000
0x00, 0x00, 0x00, 0xa0,
0x89, 0x02, 0x0f, 0x00,
// 31 @0376 GPUREG_ATTRIBBUFFERS_FORMAT_LOW 7b,1ffc0000
0x7b, 0x00, 0x00, 0x00,
0x01, 0x02, 0x1f, 0x80,
0x00, 0x00, 0xfc, 0x1f,
0x00, 0x00, 0x00, 0x00,
// 32 @0392 GPUREG_VSH_INPUTBUFFER_CONFIG a0000001
0x01, 0x00, 0x00, 0xa0,
0xb9, 0x02, 0x0b, 0x00,
// 33 @0400 GPUREG_VSH_NUM_ATTR 1
0x01, 0x00, 0x00, 0x00,
0x42, 0x02, 0x0f, 0x00,
// 34 @0408 GPUREG_VSH_ATTRIBUTES_PERMUTATION_LOW 10,0
0x10, 0x00, 0x00, 0x00,
0xbb, 0x02, 0x1f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 35 @0424 GPUREG_DEPTHMAP_ENABLE 1
0x01, 0x00, 0x00, 0x00,
0x6d, 0x00, 0x0f, 0x00,
// 36 @0432 GPUREG_FACECULLING_CONFIG 2
0x02, 0x00, 0x00, 0x00,
0x40, 0x00, 0x0f, 0x00,
// 37 @0440 GPUREG_DEPTHMAP_SCALE bf0000,0
0x00, 0x00, 0xbf, 0x00,
0x4d, 0x00, 0x1f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 38 @0456 GPUREG_FRAGOP_ALPHA_TEST 10,10,0,f10
0x10, 0x00, 0x00, 0x00,
0x04, 0x01, 0x3f, 0x80,
0x10, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x10, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 39 @0480 GPUREG_GAS_DELTAZ_DEPTH 0
0x00, 0x00, 0x00, 0x00,
0x26, 0x01, 0x08, 0x00,
// 40 @0488 GPUREG_BLEND_COLOR 0
0x00, 0x00, 0x00, 0x00,
0x03, 0x01, 0x0f, 0x00,
// 41 @0496 GPUREG_BLEND_FUNC 76760000
0x00, 0x00, 0x76, 0x76,
0x01, 0x01, 0x0f, 0x00,
// 42 @0504 GPUREG_LOGIC_OP 0
0x00, 0x00, 0x00, 0x00,
0x02, 0x01, 0x0f, 0x00,
// 43 @0512 GPUREG_COLOR_OPERATION e40100
0x00, 0x01, 0xe4, 0x00,
0x00, 0x01, 0x07, 0x00,
// 44 @0520 GPUREG_FRAGOP_SHADOW 80003c00
0x00, 0x3c, 0x00, 0x80,
0x30, 0x01, 0x0f, 0x00,
// 45 @0528 GPUREG_EARLYDEPTH_TEST1 0
0x00, 0x00, 0x00, 0x00,
0x62, 0x00, 0x01, 0x00,
// 46 @0536 GPUREG_EARLYDEPTH_TEST2 0
0x00, 0x00, 0x00, 0x00,
0x18, 0x01, 0x0f, 0x00,
// 47 @0544 GPUREG_EARLYDEPTH_FUNC 0
0x00, 0x00, 0x00, 0x00,
0x61, 0x00, 0x01, 0x00,
// 48 @0552 GPUREG_EARLYDEPTH_DATA 0
0x00, 0x00, 0x00, 0x00,
0x6a, 0x00, 0x07, 0x00,
// 49 @0560 GPUREG_TEXUNIT0_BORDER_COLOR 0,2000200,0,0,3040000
0x00, 0x00, 0x00, 0x00,
0x81, 0x00, 0x4f, 0x80,
0x00, 0x02, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x04, 0x03,
// 50 @0584 GPUREG_TEXUNIT0_TYPE 1
0x01, 0x00, 0x00, 0x00,
0x8e, 0x00, 0x0f, 0x00,
// 51 @0592 GPUREG_TEXUNIT_CONFIG 11001
0x01, 0x10, 0x01, 0x00,
0x80, 0x00, 0x0b, 0x00,
// 52 @0600 GPUREG_TEXUNIT_CONFIG 10000
0x00, 0x00, 0x01, 0x00,
0x80, 0x00, 0x04, 0x00,
// 53 @0608 GPUREG_TEXUNIT0_SHADOW 1
0x01, 0x00, 0x00, 0x00,
0x8b, 0x00, 0x0f, 0x00,
// 54 @0616 GPUREG_TEXENV_UPDATE_BUFFER 0
0x00, 0x00, 0x00, 0x00,
0xe0, 0x00, 0x07, 0x00,
// 55 @0624 GPUREG_TEXENV_BUFFER_COLOR ffffffff
0xff, 0xff, 0xff, 0xff,
0xfd, 0x00, 0x0f, 0x00,
// 56 @0632 GPUREG_FOG_COLOR 0
0x00, 0x00, 0x00, 0x00,
0xe1, 0x00, 0x0f, 0x00,
// 57 @0640 GPUREG_TEXENV0_SOURCE 30003,0,0,ffffffff,0
0x03, 0x00, 0x03, 0x00,
0xc0, 0x00, 0x4f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00,
// 58 @0664 GPUREG_TEXENV1_SOURCE f000f,0,0,ffffffff,0
0x0f, 0x00, 0x0f, 0x00,
0xc8, 0x00, 0x4f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00,
// 59 @0688 GPUREG_TEXENV2_SOURCE f000f,0,0,ffffffff,0
0x0f, 0x00, 0x0f, 0x00,
0xd0, 0x00, 0x4f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00,
// 60 @0712 GPUREG_TEXENV3_SOURCE f000f,0,0,ffffffff,0
0x0f, 0x00, 0x0f, 0x00,
0xd8, 0x00, 0x4f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00,
// 61 @0736 GPUREG_TEXENV4_SOURCE f000f,0,0,ffffffff,0
0x0f, 0x00, 0x0f, 0x00,
0xf0, 0x00, 0x4f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00,
// 62 @0760 GPUREG_TEXENV5_SOURCE f000f,0,0,ffffffff,0
0x0f, 0x00, 0x0f, 0x00,
0xf8, 0x00, 0x4f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00,
// 63 @0784 GPUREG_VSH_FLOATUNIFORM_INDEX 5f,3e0000bf,3f00,0
0x5f, 0x00, 0x00, 0x00,
0xc0, 0x02, 0x3f, 0x80,
0xbf, 0x00, 0x00, 0x3e,
0x00, 0x3f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 64 @0808 GPUREG_VSH_FLOATUNIFORM_INDEX 80000000
0x00, 0x00, 0x00, 0x80,
0xc0, 0x02, 0x0f, 0x00,
// 65 @0816 GPUREG_VSH_FLOATUNIFORM_DATA0 bf800000,0,3c088888,0,3f800000,0,0,bba3d70a,bf800000,3f800000,0,0,3f800000,0,0,0
0x00, 0x00, 0x80, 0xbf,
0xc1, 0x02, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00,
0x88, 0x88, 0x08, 0x3c,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x3f,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x0a, 0xd7, 0xa3, 0xbb,
0x00, 0x00, 0x80, 0xbf,
0x00, 0x00, 0x80, 0x3f,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x3f,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 66 @0888 GPUREG_VSH_BOOLUNIFORM 7fff0000
0x00, 0x00, 0xff, 0x7f,
0xb0, 0x02, 0x0f, 0x00,
// 67 @0896 GPUREG_PRIMITIVE_CONFIG 100
0x00, 0x01, 0x00, 0x00,
0x5e, 0x02, 0x02, 0x00,
// 68 @0904 GPUREG_RESTART_PRIMITIVE 1
0x01, 0x00, 0x00, 0x00,
0x5f, 0x02, 0x0f, 0x00,
// 69 @0912 GPUREG_INDEXBUFFER_CONFIG 80000000
0x00, 0x00, 0x00, 0x80,
0x27, 0x02, 0x0f, 0x00,
// 70 @0920 GPUREG_GEOSTAGE_CONFIG2 1
0x01, 0x00, 0x00, 0x00,
0x53, 0x02, 0x01, 0x00,
// 71 @0928 GPUREG_START_DRAW_FUNC0 0
0x00, 0x00, 0x00, 0x00,
0x45, 0x02, 0x01, 0x00,
// 72 @0936 GPUREG_FIXEDATTRIB_INDEX f
0x0f, 0x00, 0x00, 0x00,
0x32, 0x02, 0x0f, 0x00,
// 73 @0944 GPUREG_FIXEDATTRIB_DATA0 3f00003e,0,434000
0x3e, 0x00, 0x00, 0x3f,
0x33, 0x02, 0x2f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x43, 0x00,
// 74 @0960 GPUREG_FIXEDATTRIB_DATA0 0,3e10,0
0x00, 0x00, 0x00, 0x00,
0x33, 0x02, 0x2f, 0x80,
0x10, 0x3e, 0x00, 0x00, // <---- 968 003e10改为003e60
0x00, 0x00, 0x00, 0x00,
// 75 @0976 GPUREG_FIXEDATTRIB_DATA0 3f00003e,0,477c00
0x3e, 0x00, 0x00, 0x3f,
0x33, 0x02, 0x2f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x7c, 0x47, 0x00,
// 76 @0992 GPUREG_FIXEDATTRIB_DATA0 0,3e10,3e6800
0x00, 0x00, 0x00, 0x00,
0x33, 0x02, 0x2f, 0x80,
0x10, 0x3e, 0x00, 0x00, // <---- 1000 003e10改为003e60
0x00, 0x68, 0x3e, 0x00, // <---- 1004 3e6800改为3de000
// 77 @1008 GPUREG_FIXEDATTRIB_DATA0 3f00003e,46e0,434000
0x3e, 0x00, 0x00, 0x3f,
0x33, 0x02, 0x2f, 0x80,
0xe0, 0x46, 0x00, 0x00,
0x00, 0x40, 0x43, 0x00,
// 78 @1024 GPUREG_FIXEDATTRIB_DATA0 0,3f00,0
0x00, 0x00, 0x00, 0x00,
0x33, 0x02, 0x2f, 0x80,
0x00, 0x3f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 79 @1040 GPUREG_FIXEDATTRIB_DATA0 3f00003e,46e0,477c00
0x3e, 0x00, 0x00, 0x3f,
0x33, 0x02, 0x2f, 0x80,
0xe0, 0x46, 0x00, 0x00,
0x00, 0x7c, 0x47, 0x00,
// 80 @1056 GPUREG_FIXEDATTRIB_DATA0 0,3f00,3e6800
0x00, 0x00, 0x00, 0x00,
0x33, 0x02, 0x2f, 0x80,
0x00, 0x3f, 0x00, 0x00,
0x00, 0x68, 0x3e, 0x00, // <---- 1068 3e6800改为3de000
// 81 @1072 GPUREG_START_DRAW_FUNC0 1
0x01, 0x00, 0x00, 0x00,
0x45, 0x02, 0x01, 0x00,
// 82 @1080 GPUREG_GEOSTAGE_CONFIG2 0
0x00, 0x00, 0x00, 0x00,
0x53, 0x02, 0x01, 0x00,
// 83 @1088 GPUREG_VTX_FUNC 1
0x01, 0x00, 0x00, 0x00,
0x31, 0x02, 0x0f, 0x00,
// 84 @1096 GPUREG_FRAMEBUFFER_FLUSH 1
0x01, 0x00, 0x00, 0x00,
0x11, 0x01, 0x0f, 0x00,
// 85 @1104 GPUREG_FRAMEBUFFER_INVALIDATE 1
0x01, 0x00, 0x00, 0x00,
0x10, 0x01, 0x0f, 0x00,
// 86 @1112 GPUREG_EARLYDEPTH_CLEAR 1
0x01, 0x00, 0x00, 0x00,
0x63, 0x00, 0x0f, 0x00,
// 87 @1120 GPUREG_FINALIZE 12345678
0x78, 0x56, 0x34, 0x12,
0x10, 0x00, 0x0f, 0x00,
// 88 @1128 GPUREG_FINALIZE 12345678
0x78, 0x56, 0x34, 0x12,
0x10, 0x00, 0x0f, 0x00
};
// 360x240 without scaling, no filter.
alignas(16) u8 gbaGpuList2[448] =
{
// 0x01, 0x00, 0x00, 0x00, 0x10, 0x01, 0x0F, 0x00, 0x00, 0x00, 0x06, 0x03,
// 0x1C, 0x01, 0x2F, 0x80, 0x00, 0x00, 0x03, 0x03, 0xF0, 0xF0, 0x18, 0x01,
// 0xF0, 0xF0, 0x18, 0x01, 0x6E, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00,
// 0x16, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x01, 0x00, 0x17, 0x01, 0x0F, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x1B, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00,
// 0x12, 0x01, 0x3F, 0x80, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
// 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x45, 0x00,
// 0x41, 0x00, 0x3F, 0x80, 0x10, 0x11, 0x11, 0x38, 0x00, 0x90, 0x46, 0x00,
// 0x14, 0xAE, 0x47, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x68, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x2F, 0x80,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
// 0xC0, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x80, 0xBF, 0xC1, 0x02, 0xFF, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x08, 0x3C, 0x00, 0x00, 0x00, 0x00,
// 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x0A, 0xD7, 0xA3, 0xBB, 0x00, 0x00, 0x80, 0xBF, 0x00, 0x00, 0x80, 0x3F,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3F,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x5E, 0x02, 0x02, 0x00,
// 0x01, 0x00, 0x00, 0x00, 0x5F, 0x02, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x80,
// 0x27, 0x02, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x53, 0x02, 0x01, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x45, 0x02, 0x01, 0x00, 0x0F, 0x00, 0x00, 0x00,
// 0x32, 0x02, 0x0F, 0x00, 0x3E, 0x00, 0x00, 0x3F, 0x33, 0x02, 0x2F, 0x80,
// 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x33, 0x02, 0x2F, 0x80, 0x10, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x3E, 0x00, 0x00, 0x3F, 0x33, 0x02, 0x2F, 0x80, 0x00, 0x00, 0x00, 0x00,
// 0x00, 0x7C, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0x2F, 0x80,
// 0x10, 0x3E, 0x00, 0x00, 0x00, 0x68, 0x3E, 0x00, 0x3E, 0x00, 0x00, 0x3F,
// 0x33, 0x02, 0x2F, 0x80, 0xE0, 0x46, 0x00, 0x00, 0x00, 0x40, 0x43, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x33, 0x02, 0x2F, 0x80, 0x00, 0x3F, 0x00, 0x00,
// 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3F, 0x33, 0x02, 0x2F, 0x80,
// 0xE0, 0x46, 0x00, 0x00, 0x00, 0x7C, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x33, 0x02, 0x2F, 0x80, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x68, 0x3E, 0x00,
// 0x01, 0x00, 0x00, 0x00, 0x45, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
// 0x53, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x31, 0x02, 0x0F, 0x00,
// 0x01, 0x00, 0x00, 0x00, 0x11, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00,
// 0x10, 0x01, 0x0F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x63, 0x00, 0x0F, 0x00,
// 0x78, 0x56, 0x34, 0x12, 0x10, 0x00, 0x0F, 0x00, 0x78, 0x56, 0x34, 0x12,
// 0x10, 0x00, 0x0F, 0x00
// 1 @0000 GPUREG_FRAMEBUFFER_INVALIDATE 1
0x01, 0x00, 0x00, 0x00,
0x10, 0x01, 0x0f, 0x00,
// 2 @0008 GPUREG_DEPTHBUFFER_LOC 3060000,3030000,118f0f0
0x00, 0x00, 0x06, 0x03,
0x1c, 0x01, 0x2f, 0x80,
0x00, 0x00, 0x03, 0x03,
0xf0, 0xf0, 0x18, 0x01,
// 3 @0024 GPUREG_RENDERBUF_DIM 118f0f0
0xf0, 0xf0, 0x18, 0x01,
0x6e, 0x00, 0x0f, 0x00,
// 4 @0032 GPUREG_DEPTHBUFFER_FORMAT 3
0x03, 0x00, 0x00, 0x00,
0x16, 0x01, 0x0f, 0x00,
// 5 @0040 GPUREG_COLORBUFFER_FORMAT 10001
0x01, 0x00, 0x01, 0x00,
0x17, 0x01, 0x0f, 0x00,
// 6 @0048 GPUREG_FRAMEBUFFER_BLOCK32 0
0x00, 0x00, 0x00, 0x00,
0x1b, 0x01, 0x0f, 0x00,
// 7 @0056 GPUREG_COLORBUFFER_READ f,f,3,3
0x0f, 0x00, 0x00, 0x00,
0x12, 0x01, 0x3f, 0x80,
0x0f, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 8 @0080 GPUREG_VIEWPORT_WIDTH 45e000,38111110,469000,3747ae14
0x00, 0xe0, 0x45, 0x00,
0x41, 0x00, 0x3f, 0x80,
0x10, 0x11, 0x11, 0x38,
0x00, 0x90, 0x46, 0x00,
0x14, 0xae, 0x47, 0x37,
0x00, 0x00, 0x00, 0x00,
// 9 @0104 GPUREG_VIEWPORT_XY 0
0x00, 0x00, 0x00, 0x00,
0x68, 0x00, 0x0f, 0x00,
// 10 @0112 GPUREG_SCISSORTEST_MODE 0,0,0
0x00, 0x00, 0x00, 0x00,
0x65, 0x00, 0x2f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 11 @0128 GPUREG_VSH_FLOATUNIFORM_INDEX 80000000
0x00, 0x00, 0x00, 0x80,
0xc0, 0x02, 0x0f, 0x00,
// 12 @0136 GPUREG_VSH_FLOATUNIFORM_DATA0 bf800000,0,3c088888,0,3f800000,0,0,bba3d70a,bf800000,3f800000,0,0,3f800000,0,0,0
0x00, 0x00, 0x80, 0xbf,
0xc1, 0x02, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00,
0x88, 0x88, 0x08, 0x3c,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x3f,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x0a, 0xd7, 0xa3, 0xbb,
0x00, 0x00, 0x80, 0xbf,
0x00, 0x00, 0x80, 0x3f,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x3f,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 13 @0208 GPUREG_PRIMITIVE_CONFIG 100
0x00, 0x01, 0x00, 0x00,
0x5e, 0x02, 0x02, 0x00,
// 14 @0216 GPUREG_RESTART_PRIMITIVE 1
0x01, 0x00, 0x00, 0x00,
0x5f, 0x02, 0x0f, 0x00,
// 15 @0224 GPUREG_INDEXBUFFER_CONFIG 80000000
0x00, 0x00, 0x00, 0x80,
0x27, 0x02, 0x0f, 0x00,
// 16 @0232 GPUREG_GEOSTAGE_CONFIG2 1
0x01, 0x00, 0x00, 0x00,
0x53, 0x02, 0x01, 0x00,
// 17 @0240 GPUREG_START_DRAW_FUNC0 0
0x00, 0x00, 0x00, 0x00,
0x45, 0x02, 0x01, 0x00,
// 18 @0248 GPUREG_FIXEDATTRIB_INDEX f
0x0f, 0x00, 0x00, 0x00,
0x32, 0x02, 0x0f, 0x00,
// 19 @0256 GPUREG_FIXEDATTRIB_DATA0 3f00003e,0,434000
0x3e, 0x00, 0x00, 0x3f,
0x33, 0x02, 0x2f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x43, 0x00,
// 20 @0272 GPUREG_FIXEDATTRIB_DATA0 0,3e10,0
0x00, 0x00, 0x00, 0x00,
0x33, 0x02, 0x2f, 0x80,
0x10, 0x3e, 0x00, 0x00, // <---- 280 003e10改为003e60
0x00, 0x00, 0x00, 0x00,
// 21 @0288 GPUREG_FIXEDATTRIB_DATA0 3f00003e,0,477c00
0x3e, 0x00, 0x00, 0x3f,
0x33, 0x02, 0x2f, 0x80,
0x00, 0x00, 0x00, 0x00,
0x00, 0x7c, 0x47, 0x00,
// 22 @0304 GPUREG_FIXEDATTRIB_DATA0 0,3e10,3e6800
0x00, 0x00, 0x00, 0x00,
0x33, 0x02, 0x2f, 0x80,
0x10, 0x3e, 0x00, 0x00, // <---- 312 003e10改为003e60
0x00, 0x68, 0x3e, 0x00, // <---- 316 3e6800改为3de000
// 23 @0320 GPUREG_FIXEDATTRIB_DATA0 3f00003e,46e0,434000
0x3e, 0x00, 0x00, 0x3f,
0x33, 0x02, 0x2f, 0x80,
0xe0, 0x46, 0x00, 0x00,
0x00, 0x40, 0x43, 0x00,
// 24 @0336 GPUREG_FIXEDATTRIB_DATA0 0,3f00,0
0x00, 0x00, 0x00, 0x00,
0x33, 0x02, 0x2f, 0x80,
0x00, 0x3f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// 25 @0352 GPUREG_FIXEDATTRIB_DATA0 3f00003e,46e0,477c00
0x3e, 0x00, 0x00, 0x3f,
0x33, 0x02, 0x2f, 0x80,
0xe0, 0x46, 0x00, 0x00,
0x00, 0x7c, 0x47, 0x00,
// 26 @0368 GPUREG_FIXEDATTRIB_DATA0 0,3f00,3e6800
0x00, 0x00, 0x00, 0x00,
0x33, 0x02, 0x2f, 0x80,
0x00, 0x3f, 0x00, 0x00,
0x00, 0x68, 0x3e, 0x00, // <---- 380 3e6800改为3de000
// 27 @0384 GPUREG_START_DRAW_FUNC0 1
0x01, 0x00, 0x00, 0x00,
0x45, 0x02, 0x01, 0x00,
// 28 @0392 GPUREG_GEOSTAGE_CONFIG2 0
0x00, 0x00, 0x00, 0x00,
0x53, 0x02, 0x01, 0x00,
// 29 @0400 GPUREG_VTX_FUNC 1
0x01, 0x00, 0x00, 0x00,
0x31, 0x02, 0x0f, 0x00,
// 30 @0408 GPUREG_FRAMEBUFFER_FLUSH 1
0x01, 0x00, 0x00, 0x00,
0x11, 0x01, 0x0f, 0x00,
// 31 @0416 GPUREG_FRAMEBUFFER_INVALIDATE 1
0x01, 0x00, 0x00, 0x00,
0x10, 0x01, 0x0f, 0x00,
// 32 @0424 GPUREG_EARLYDEPTH_CLEAR 1
0x01, 0x00, 0x00, 0x00,
0x63, 0x00, 0x0f, 0x00,
// 33 @0432 GPUREG_FINALIZE 12345678
0x78, 0x56, 0x34, 0x12,
0x10, 0x00, 0x0f, 0x00,
// 34 @0440 GPUREG_FINALIZE 12345678
0x78, 0x56, 0x34, 0x12,
0x10, 0x00, 0x0f, 0x00
};
#define LB_INDEX1 (944/4)
#define RB_INDEX1 (976/4)
#define LT_INDEX1 (1008/4)
#define RT_INDEX1 (1040/4)
#define LB_INDEX2 (256/4)
#define RB_INDEX2 (288/4)
#define LT_INDEX2 (320/4)
#define RT_INDEX2 (352/4)
static void patchCoord( u32 *initarr, u32 *updatearr )
{
initarr[LB_INDEX1] = updatearr[LB_INDEX2] = 0x3f00003e;
initarr[LB_INDEX1+2] = updatearr[LB_INDEX2+2] = 0x4440;
initarr[LB_INDEX1+3] = updatearr[LB_INDEX2+3] = 0;
initarr[RB_INDEX1] = updatearr[RB_INDEX2] = 0x3f00003e;
initarr[RB_INDEX1+2] = updatearr[RB_INDEX2+2] = 0x4440;
initarr[RB_INDEX1+3] = updatearr[RB_INDEX2+3] = 0x46e000;
initarr[LT_INDEX1] = updatearr[LT_INDEX2] = 0x3f00003e;
initarr[LT_INDEX1+2] = updatearr[LT_INDEX2+2] = 0x4690;
initarr[LT_INDEX1+3] = updatearr[LT_INDEX2+3] = 0;
initarr[RT_INDEX1] = updatearr[RT_INDEX2] = 0x3f00003e;
initarr[RT_INDEX1+2] = updatearr[RT_INDEX2+2] = 0x4690;
initarr[RT_INDEX1+3] = updatearr[RT_INDEX2+3] = 0x46e000;
}
void patchGbaGpuCmdList(u8 scaleType)
{
// 73 75 77 79 | 19 21 23 25 coord
// 74 76 78 80 | 20 22 24 26 texuv
if(scaleType == 0u || scaleType == 3u)
{
/* // 这部分修改quad坐标可以干掉了
gbaGpuInitList[958] = 0x45u; // 73
gbaGpuInitList[989] = 0x40u; // 75
gbaGpuInitList[1016] = 0x40u; // 77
gbaGpuInitList[1022] = 0x45u; // 77
gbaGpuInitList[1048] = 0x40u; // 79
gbaGpuInitList[1053] = 0x40u; // 79
gbaGpuList2[270] = 0x45u; // 19
gbaGpuList2[301] = 0x40u; // 21
gbaGpuList2[328] = 0x40u; // 23
gbaGpuList2[334] = 0x45u; // 23
gbaGpuList2[360] = 0x40u; // 25
gbaGpuList2[365] = 0x40u; // 25
*/
patchCoord( gbaGpuInitList, gbaGpuList2 );
// 以下8行代码修正纹理坐标
gbaGpuInitList[968] = 0x60u; // 74
gbaGpuInitList[1000] = 0x60u; // 76
*((u32*)&gbaGpuInitList[1004]) = 0x003DE000u; // 76
*((u32*)&gbaGpuInitList[1068]) = 0x003DE000u; // 80
gbaGpuList2[280] = 0x60u; // 20
gbaGpuList2[312] = 0x60u; // 22
*((u32*)&gbaGpuList2[316]) = 0x003DE000u; // 22
*((u32*)&gbaGpuList2[380]) = 0x003DE000u; // 26
}
else if(scaleType == 1u)
{
gbaGpuInitList[572] = 0x02u; // 49
// 以下8行代码修正纹理坐标
gbaGpuInitList[968] = 0x60u;
gbaGpuInitList[1000] = 0x60u;
*((u32*)&gbaGpuInitList[1004]) = 0x003DE000u;
*((u32*)&gbaGpuInitList[1068]) = 0x003DE000u;
gbaGpuList2[280] = 0x60u;
gbaGpuList2[312] = 0x60u;
*((u32*)&gbaGpuList2[316]) = 0x003DE000u;
*((u32*)&gbaGpuList2[380]) = 0x003DE000u;
}
else return; // Nothing to do.
flushDCacheRange(gbaGpuInitList, sizeof(gbaGpuInitList));
flushDCacheRange(gbaGpuList2, sizeof(gbaGpuList2));
}