mirror of
https://gitee.com/anod/open_agb_firm.git
synced 2025-05-06 05:44:11 +08:00
920 lines
30 KiB
C
920 lines
30 KiB
C
/*
|
||
* 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)
|
||
#define RB_INDEX1 (976)
|
||
#define LT_INDEX1 (1008)
|
||
#define RT_INDEX1 (1040)
|
||
|
||
#define LB_INDEX2 (256)
|
||
#define RB_INDEX2 (288)
|
||
#define LT_INDEX2 (320)
|
||
#define RT_INDEX2 (352)
|
||
|
||
static u32 tof24( u32 d )
|
||
{
|
||
if( d == 0 ) return 0;
|
||
|
||
u32 c = 0, o = 1, r = 0;
|
||
// exp
|
||
for( ; 2*o <= d; o <<= 1 ) ++c;
|
||
o = 1<<c;
|
||
d -= o;
|
||
c += 63;//0b111111
|
||
|
||
// decimals
|
||
for(int i=15; d > 0 && i >= 0; --i ){
|
||
o >>= 1;
|
||
if( d >= o ) {
|
||
r |= 1<<i;
|
||
d -= o;
|
||
}
|
||
}
|
||
return c<<16 | r;
|
||
}
|
||
|
||
static void xyToWzyx( u16 x, u16 y, u32 *p )
|
||
{
|
||
u32 f24x = tof24(x);
|
||
u32 f24y = tof24(y);
|
||
p[0] = 0x3f00003e;
|
||
// p[1] 是GPU的寄存器
|
||
p[2] = f24y >> 8;
|
||
p[3] = f24y<<24 | f24x;
|
||
}
|
||
|
||
static void setQuadRect( u16 left, u16 right, u16 top, u16 bottom )
|
||
{
|
||
if( left >= right || right > 400u ) return;
|
||
if( bottom >= top || top > 240u ) return;
|
||
|
||
xyToWzyx(left, bottom, (u32*)&gbaGpuInitList[LB_INDEX1]);
|
||
xyToWzyx(left, bottom, (u32*)&gbaGpuList2[LB_INDEX2]);
|
||
|
||
xyToWzyx(right, bottom, (u32*)&gbaGpuInitList[RB_INDEX1]);
|
||
xyToWzyx(right, bottom, (u32*)&gbaGpuList2[RB_INDEX2]);
|
||
|
||
xyToWzyx(left, top, (u32*)&gbaGpuInitList[LT_INDEX1]);
|
||
xyToWzyx(left, top, (u32*)&gbaGpuList2[LT_INDEX2]);
|
||
|
||
xyToWzyx(right, top, (u32*)&gbaGpuInitList[RT_INDEX1]);
|
||
xyToWzyx(right, top, (u32*)&gbaGpuList2[RT_INDEX2]);
|
||
}
|
||
|
||
void patchGbaGpuCmdList(u8 scaleType, bool border)
|
||
{
|
||
// 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
|
||
*/
|
||
if( border ) setQuadRect( 80, 320, 200, 40 );
|
||
else setQuadRect( 0, 240, 200, 40 );
|
||
|
||
// 以下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));
|
||
}
|