import test ROM binary and source

This commit is contained in:
Richard Goedeken 2012-09-09 22:11:29 -07:00
commit 76ef14c876
33 changed files with 15847 additions and 0 deletions

BIN
m64p_test_rom.v64 Normal file

Binary file not shown.

44
mupen64plus/MAKEFILE.MAK Normal file
View file

@ -0,0 +1,44 @@
#/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# * Mupen64plus - MAKEFILE.MAK *
# * Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
# * Copyright (C) 2008 Marshallh *
# * *
# * 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 2 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, write to the *
# * Free Software Foundation, Inc., *
# * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
sm.bin: demo.lnk snmain.obj \
demo.obj \
gfxlib.obj \
cfb.obj \
stack.obj \
zbuf.obj \
fifo.obj
psylink /p /m /c /s @demo.lnk,demo.bin,demo.sym,demo.map
../util/runcart -f -a 0x800F1800 -h ../util/ultra1.v64 -n 'Mupen64Plus' demo.bin
ias E008 demo.bin
snmain.obj: snmain.s
.c.obj:
ccn64 -w -O2 -I. -IC:/n64/include -IC:/n64/include/PR -c $*.c
.s.obj:
asmn6432 /zd /l /ow- /g $*,$*

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,22 @@
Mupen64plus Demo rom requires a number of binary artwork assets.
The following files:
logo.3ds
logo_env.3ds
Bluegra2.bmp
bluegrad.bmp
c_env.bmp
c_gray.bmp
Redgrad2.bmp
redgrad.bmp
White.bmp
are Copyright: The Mupen64plus Team
| Copyright (C) 2008 Marshallh
|
| You may copy them under the Creative Common Attribution-ShareAlike 3.0
| license, as found here:
|
| http://creativecommons.org/licenses/by-sa/3.0/

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

174
mupen64plus/assets/box_n.h Normal file
View file

@ -0,0 +1,174 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - box_n.h *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
static Gfx Text_box_material01_C_dummy_aligner[] = { gsSPEndDisplayList() };
unsigned short Text_box_material01[] =
{
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,
0xffff,0xffff,0xffff,0xffff
};
Vtx_t Vtx_box_mesh01[] =
{
{-3000,3000,-3000,0,56,46,255,255,255,255},
{-3000,-3000,-3000,0,56,46,255,255,255,255},
{-3000,3000,3000,0,56,2001,255,255,255,255},
{-3000,-3000,3000,0,56,2001,255,255,255,255},
{3000,3000,-3000,0,1991,46,255,255,255,255},
{3000,-3000,-3000,0,1991,46,255,255,255,255},
{3000,3000,3000,0,1991,2001,255,255,255,255},
{3000,-3000,3000,0,1991,2001,255,255,255,255},
};
Gfx Vtx_box_mesh01_dl[] =
{
gsSPVertex(&Vtx_box_mesh01[0],1,0),
gsSPVertex(&Vtx_box_mesh01[4],1,1),
gsSPVertex(&Vtx_box_mesh01[6],1,2),
gsSP1Triangle(0,1,2,0),
gsSPVertex(&Vtx_box_mesh01[2],1,3),
gsSP1Triangle(3,0,2,0),
gsSPVertex(&Vtx_box_mesh01[1],1,4),
gsSPVertex(&Vtx_box_mesh01[3],1,5),
gsSPVertex(&Vtx_box_mesh01[7],1,6),
gsSP1Triangle(4,5,6,0),
gsSPVertex(&Vtx_box_mesh01[5],1,7),
gsSP1Triangle(7,4,6,0),
gsSP1Triangle(0,3,5,0),
gsSP1Triangle(4,0,5,0),
gsSP1Triangle(1,7,6,0),
gsSP1Triangle(2,1,6,0),
gsSP1Triangle(3,2,6,0),
gsSP1Triangle(5,3,6,0),
gsSP1Triangle(0,4,7,0),
gsSP1Triangle(1,0,7,0),
gsSPEndDisplayList(),
};
Gfx Wtx_box_box_dl[] =
{
gsDPLoadTextureBlock(Text_box_material01, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(Vtx_box_mesh01_dl),
gsSPEndDisplayList(),
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
mupen64plus/assets/logo.3ds Normal file

Binary file not shown.

1657
mupen64plus/assets/logo.an8 Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

3782
mupen64plus/assets/logo_n.h Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

37
mupen64plus/cfb.c Normal file
View file

@ -0,0 +1,37 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - cfb.c *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <ultra64.h>
#include "include/config.h"
#ifdef SCREEN_BPP_8
u8 _cfb[NUM_CFB][SCREEN_WIDTH * SCREEN_HEIGHT]; /* 8-bit */
#else
#ifdef SCREEN_BPP_16
u16 _cfb[NUM_CFB][SCREEN_WIDTH * SCREEN_HEIGHT]; /* 16-bit */
#else
#ifdef SCREEN_BPP_32
u32 _cfb[NUM_CFB][SCREEN_WIDTH * SCREEN_HEIGHT]; /* 32-bit */
#endif
#endif
#endif

67
mupen64plus/control.h Normal file
View file

@ -0,0 +1,67 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - control.h *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <ultra64.h>
#include "include\config.h"
extern OSMesgQueue SiMessageQ;
/* extern OSPfs pfs[NUM_CONT]; */
OSContStatus statusData[NUM_CONT];
OSContPad dummyControllerData = {0, 0, 0, 0};
OSContPad controllerData[NUM_CONT];
OSContPad* validControllerData[NUM_CONT];
int activeControllers[NUM_CONT];
int numControllers=0;
/* Return how many controllers are connected
* if there are more than <NUM_CONT> connected, return NUM_CONT
* (ie specify how many controllers you want with NUM_CONT, and
* the return result is the number of controllers actually hooked up)
*/
void initControllers(void)
{
int i;
u8 pattern;
osContInit(&SiMessageQ,&pattern,statusData);
}
u32 initRumblePack(int contno)
{
return -1;
}
/* Return pointer to controller data for each connected controller
* oneshot = which buttons to treat as one-shots ("fire" buttons)
* oneshot is any of the button macros (eg CONT_B, CONT_LEFT) ored together)
*/
void readController(void)
{
/* MotorSiGetAccess(); */
osContStartReadData(&SiMessageQ);
osWritebackDCacheAll();
osRecvMesg(&SiMessageQ, NULL, OS_MESG_BLOCK);
/* MotorSiRelAccess(); */
osContGetReadData(controllerData);
}

529
mupen64plus/demo.c Normal file
View file

@ -0,0 +1,529 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - demo.c *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Use F3DEX microcode. */
#define F3DEX_GBI
/* Include N64 defines. */
#include <ultra64.h>
#include "include/config.h"
#include "include/helpfunc.h"
#include "include/types.h"
#include "graphics.h"
#include "sprite.h"
#include "hardware.h"
#include "control.h"
#define PI 3.141592654
#define DEG90 PI/2
#define DEG180 PI
/* Macros */
#define vecCopy(A,B) B[0]=A[0]; B[1]=A[1]; B[2]=A[2];
#define vecScale(A,B,C) C[0]=A[0]*(B); C[1]=A[1]*(B); C[2]=A[2]*(B);
#define vecAdd(A,B,C) C[0]=A[0]+B[0]; C[1]=A[1]+B[1]; C[2]=A[2]+B[2];
#define vecSet(V,X,Y,Z) V[0] = X; V[1] = Y; V[2] = Z;
#define DEG2RAD(f) (f) / 180 * PI
#define RAD2DEG(f) (f) * 180 / PI
void renderObj(Gfx* displayList, vec3_t* pos, vec3_t* rot, float size, Gfx** listEnd);
/* Declare objects. */
simpleObj camera;
vec3_t camera_dest;
vec3_t camera_pdest;
float camera_lag = 1.0;
float move_lag = 1.0;
simpleObj logo;
simpleObj box;
Dynamic* generate; /* Dynamic info we're generating now. */
int entity = 0;
/* Graphics variables. */
int firstframe = 1; /* First frame. */
Gfx* gdl_start; /* Start of this frame's dynamic display list. */
Gfx* gdl_end; /* Current position in dynamic display list. */
OSTask* gentask; /* Task we're generating. */
u16 pnorm; /* Perpsective normal. */
/* Controller variables. */
int analogX = 0;
int analogY = 0;
int button[4];
OSContPad** pad;
int lockCamera = 0;
char tempStr[256];
float f;
int i;
int j;
int k;
int l;
int dist;
int x;
int y;
int lastx = 0;
int lasty = 0;
/* Effect variables. */
int fade_trans = 0;
float loopStart = 0;
float loopEnd = 0;
float loopTime = 0;
float speed = 1;
float sineCount = 0;
float angle1;
float angle2;
/* Custom variables. */
float customVar1 = 0;
float interp;
float temp;
float rotate = 0;
float fov = 50;
float count = 0;
short stage = 0;
short nextStage = 0;
float logoscale = 0.5;
int logotrans = 1;
int logoenv = 190;
LookAt logola;
Mtx logomat;
short buttonPress[255];
void boot(void* arg)
{
void MainProc(void*);
register int i;
/* Init OS. */
osInitialize();
/* Screen off. */
osViBlack(TRUE);
/* Create main thread. */
osCreateThread(&mainThread, MAIN_ID, MainProc, arg, (void*)(mainStack+STACKSIZE/8), (OSPri) MAIN_PRIORITY);
/* Start main thread. */
osStartThread(&mainThread);
}
void InitGlobalVars(void)
{
/* Initialize RSP Addresses. */
rsp_static_len = _rsp_staticSegmentRomEnd - _rsp_staticSegmentRomStart;
rsp_static_addr = (char*) _codeSegmentEnd;
rsp_static_end = (char*) _codeSegmentEnd + rsp_static_len;
fifosize = (u8*)fifobuffer + (sizeof(u64) * FIFOSIZE) + 1;
}
void MainProc(void *arg)
{
void GameProc(void*);
InitGlobalVars();
/* Create game thread. */
osCreateThread(&gameThread, GAME_ID, GameProc, arg, (void *)(gameStack+STACKSIZE/8), GAME_PRIORITY);
/* Create video manager. */
osCreateViManager(OS_PRIORITY_VIMGR);
/* Set video mode. */
osViSetMode(&osViModeTable[SCREEN_MODE]);
osViSetSpecialFeatures(OS_VI_DITHER_FILTER_OFF | OS_VI_GAMMA_OFF);
/* Create PI manager. */
osCreatePiManager((OSPri) OS_PRIORITY_PIMGR, &PiMessageQ, PiMessages, PI_MSGQUEUE_SIZE);
/* Start game thread. */
osStartThread(&gameThread);
/* Relinquish CPU. */
osSetThreadPri(NULL, 0);
for(;;);
}
void GameProc(void *arg)
{
void GameLoop();
OSIoMesg dmaMb;
Gfx* l;
/* Create DMA message queue. */
osCreateMesgQueue(&DMAMessageQ, DMAMessages, DMA_MSGQUEUE_SIZE);
/* Create RSP message queue. */
osCreateMesgQueue(&RSPDoneMessageQ, RSPDoneMessages, RSPDONE_MSGQUEUE_SIZE);
osSetEventMesg(OS_EVENT_SP, &RSPDoneMessageQ, dummyMsg);
/* Create RDP message queue. */
osCreateMesgQueue(&RDPDoneMessageQ, RDPDoneMessages, RDPDONE_MSGQUEUE_SIZE);
osSetEventMesg(OS_EVENT_DP, &RDPDoneMessageQ, dummyMsg);
/* Create VRT message queue. */
osCreateMesgQueue(&RetraceMessageQ, RetraceMessages, RETRACE_MSGQUEUE_SIZE);
osViSetEvent(&RetraceMessageQ, dummyMsg, 1);
/* SI (controllers) */
osCreateMesgQueue(&SiMessageQ, &SiMessages, 1);
osSetEventMesg(OS_EVENT_SI, &SiMessageQ, (OSMesg)1);
initControllers();
initWorld();
GameLoop();
}
void initWorld()
{
vecSet(logo.pos, 0, 0, 0);
vecSet(box.pos, 0, 0, 0);
camera.pos[0] = 0;
camera.pos[1] = 20;
camera.pos[2] = -300;
camera_dest[0] = 0;
camera_dest[1] = 0;
camera_dest[2] = 0;
}
void loop1()
{
loopStart = (int)osGetTime() / 2100;
/* OS_CYCLES_TO_USEC(osGetTime()); */
/* Run task we built during the previous frame. */
if(!firstframe)
osSpTaskStart(gentask);
/* Point to new dynamic buffer. */
generate = &(dynamic[CFB_NextCount]);
/* Reset entity counter. (matrix and rotation object counter) */
entity = 0;
/* Set up pointers to GDL. */
gdl_start = generate->glist;
gdl_end = gdl_start;
/* Init the GDL. */
N64initDL (&gdl_end, gdl_start, rsp_static_addr, generate, Next_CFB, YES, YES);
checkCont();
checkCamera();
}
void checkCont()
{
/* Read from the joypad controllers. */
readController();
button[0]=controllerData[0].button;
analogX=(int)(controllerData[0].stick_x);
analogY=(int)(controllerData[0].stick_y);
/* Deadzone */
if(fabs(analogX) < 10) {analogX = 0;}
if(fabs(analogY) < 10) {analogY = 0;}
if(analogX > 45) analogX = 45;
if(analogX < -45) analogX = -45;
if(analogY > 45) analogY = 45;
if(analogY < -45) analogY = -45;
}
void checkCamera()
{
Mtx ma;
camera.mov[0] = camera.pos[0];
camera.mov[1] = camera.pos[1];
camera.mov[2] = camera.pos[2];
camera_pdest[0] = camera_dest[0];
camera_pdest[1] = camera_dest[1];
camera_pdest[2] = camera_dest[2];
/* Set up projection matrix. */
guPerspective(&(generate->proj), &pnorm, fov, 1.3333333, 50.0, 5000.0, 1.0);
gSPPerspNormalize(gdl_end++, pnorm);
guLookAt(&(generate->view), camera.mov[0], camera.mov[1], camera.mov[2], camera_pdest[0], camera_pdest[1], camera_pdest[2], 0.0, 1.0, 0.0);
guLookAtReflect(&logomat, &logola, camera.mov[0], camera.mov[1], camera.mov[2], camera_pdest[0], camera_pdest[1], camera_pdest[2], 0.0, 1.0, 0.0);
gSPMatrix(gdl_end++, OS_K0_TO_PHYSICAL(&(generate->proj)), G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH);
gSPMatrix(gdl_end++, OS_K0_TO_PHYSICAL(&(generate->view)), G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH);
}
void drawSprites()
{
gDPPipeSync(gdl_end++);
SpriteInit(&gdl_end);
/* Fade to black/ white. */
if(fade_trans != 0)
{
if(fade_trans > 0)
drawSprite(&gdl_end, &fade_white, 0, 0, 32, 32, 10, 7.5, fade_trans);
else
drawSprite(&gdl_end, &fade_black, 0, 0, 32, 32, 10, 7.5, -fade_trans);
}
SpriteFinish(&gdl_end);
}
void loop2()
{
drawSprites();
_gdlend:
/* End the GDL. */
N64terminateDL(&gdl_end);
/* Init task. */
gentask = &(task[CFB_NextCount]);
N64initTask(gentask, gdl_end, gdl_start);
/* Flush cache. */
osWritebackDCacheAll();
/* Wait for previous task to finish. */
N64waitRSP(firstframe);
N64waitRDP(firstframe);
_alldone:
/* Swap buffers. */
N64swapCFB(firstframe);
loopEnd = (int)osGetTime() / 2100 ;
/* OS_CYCLES_TO_USEC(osGetTime()); */
loopTime = loopEnd - loopStart;
speed = (float)loopTime / 100.0;
/* Wait for vertical retrace. */
N64waitVRT();
firstframe = 0;
}
void GameLoop()
{
float a_mag;
while (1)
{
loop1();
count++;
if(stage == 3)
{
logoenv = 190;
fov = 90;
vecSet(camera.pos, 0, -200, -170);
vecSet(camera_dest, 0, 0, 0);
if(count > 1) {logotrans = 255;}
camera.pos[0] = -(count*0.5-160);
camera.pos[1] = (-count*0.1+30);
camera.pos[2] = -100;
camera_dest[0] = -(count*0.5-200)+100;
camera_dest[1] = 0;
camera_dest[2] = count/3;
if(count > 568)
logotrans = (int)(32-(count-568))*8;
if(count >= 600 || nextStage == 1)
{
count = 0;
stage = 0;
}
}
if(stage == 2)
{
logoenv = 0;
fov = 30;
vecSet(camera.pos, 0, -200, -170);
vecSet(camera_dest, 0, 0, 0);
if(count > 1) {logotrans = 255;}
if(count > 550)
fov = (count-550)*0.1+30;
camera.pos[0] = -(count*0.5-200);
camera_dest[0] = (count*0.5-200);
if(count > 568)
logotrans = (int)(32-(count-568))*8;
if(count >= 600 || nextStage == 1)
{
count = 0;
stage = 3;
}
}
if(stage == 1)
{
logoenv = 190;
vecSet(camera.pos, 0, 20, -300);
vecSet(camera_dest, 0, 0, 0);
if(count > 1) {logotrans = 255;}
if(count < 40)
{
fov = count/3+10;
logotrans = count*6.375;
}
if(count > 300 && count < 350)
fov += 0.2;
if(count > 426)
logotrans = (int)(64-(count-426))*4;
camera_dest[0] = (count/1.2-220);
if(count >= 490 || nextStage == 1)
{
count = 0;
stage = 2;
logotrans = 1;
}
}
if(stage == 0)
{
logoenv = 0;
logo.rot[1] = 0;
vecSet(camera.pos, 0, 20, -300);
vecSet(camera_dest, 0, 0, 0);
camera.pos[0] = (count-300)/4;
camera.pos[1] = (count-300)/8;
if(count > 1) {logotrans = 255;}
if(count <= 40)
{
logoscale = (count/1600)+0.15;
logotrans = count*6.375;
}
if(count > 560)
logotrans = (int)(64-(count-560))*4;
if(count >= 624 || nextStage == 1)
{
count = 0;
stage = 1;
logotrans = 1;
}
}
nextStage = 0;
guPosition( &(logomat), 90+logo.rot[0], logo.rot[1], logo.rot[2]-180, logoscale, logo.pos[0], logo.pos[1], logo.pos[2]);
/* Render Objects. */
renderObj(Wtx_box_box_dl, box.pos, box.rot, 0.5, &gdl_end);
gDPPipeSync(gdl_end++);
gDPSetRenderMode(gdl_end++, G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2);
if(logotrans == 255)
renderObj(Wtx_logo_logo_dl, logo.pos, logo.rot, logoscale, &gdl_end);
/* Chnage render mode to transparent solids. */
gDPPipeSync(gdl_end++); /* Always call PipeSync before changing rendermodes. */
gDPSetCombineMode(gdl_end++,G_CC_MODULATERGB_PRIM, G_CC_MODULATERGB_PRIM);
gDPSetRenderMode(gdl_end++, G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2);
gDPSetBlendColor(gdl_end++,0xff, 0xff, 0xff, 0x01);
gDPSetPrimColor(gdl_end++,0, 0, 255, 255, 255, logotrans);
if(logotrans < 255)
renderObj(Wtx_logo_logo_dl, logo.pos, logo.rot, logoscale, &gdl_end);
/* Environmental Mapping. */
gDPPipeSync(gdl_end++);
gDPSetRenderMode( gdl_end++, G_RM_ZB_XLU_SURF,G_RM_ZB_XLU_SURF2);
gDPSetCombineMode(gdl_end++, G_CC_MODULATERGB_PRIM, G_CC_MODULATERGB_PRIM);
gSPSetGeometryMode(gdl_end++, G_LIGHTING | G_TEXTURE_GEN);
gDPSetPrimColor( gdl_end++, 0, 0, 255, 255, 255, (float)logoenv*((float)logotrans/255.0));
gSPTexture(gdl_end++, 31<<6, 31<<6, 0, G_TX_RENDERTILE, G_ON);
/* Position and render environment map model. */
gSPMatrix(gdl_end++, &(logomat), G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);
gSPDisplayList(gdl_end++, Wtx_logo_env_logo_env_dl);
/* Back to normal. */
gSPClearGeometryMode(gdl_end++, G_LIGHTING | G_TEXTURE_GEN);
loop2();
}
}
void renderObj(Gfx* displayList, vec3_t* pos, vec3_t* rot, float size, Gfx** DL_Pos)
{
/* Grab the DL. */
Gfx* glistp;
glistp = *DL_Pos;
/* Translate and rotate the object. */
guPosition(&(generate->xform[entity]), 90+(*rot)[0], (*rot)[1], (*rot)[2]-90+270, size, (*pos)[0], (*pos)[1], (*pos)[2]);
gSPMatrix(glistp++, OS_K0_TO_PHYSICAL(&(generate->xform[entity])), G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);
gSPDisplayList(glistp++, displayList);
/* Give the DL back. */
*DL_Pos = glistp;
entity++;
}

29
mupen64plus/fifo.c Normal file
View file

@ -0,0 +1,29 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - fifo.c *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <ultra64.h>
#include "include/config.h"
/* This is the fifobuffer that hold the generated DL, the bigger your 3d
* scenes, the bigger it need to be. */
u64 fifobuffer[FIFOSIZE+1];

230
mupen64plus/gfxlib.c Normal file
View file

@ -0,0 +1,230 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - hardware.h *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <ultra64.h>
#include "include/config.h"
Lights1 light1 = gdSPDefLights1(
0xFF, 0x10, 0x10, /* Ambient color. */
0xaf, 0xaf, 0xaf, /* Diffuse color. */
-1, 0, 1 /* Normal. */
);
/* Initialize RSP state DL. */
Gfx N64DLinitRSP[] =
{
gsSPViewport(&vp),
gsSPClearGeometryMode(G_SHADE | G_SHADING_SMOOTH | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD),
gsSPTexture(0, 0, 0, 0, G_OFF),
gsSPEndDisplayList(),
};
/* Initialize RDP state DL. */
Gfx N64DLinitRDP[] =
{
gsDPSetCycleType(G_CYC_1CYCLE),
gsDPPipelineMode(G_PM_NPRIMITIVE),
gsDPSetScissor(G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT),
gsDPSetColorDither(G_CD_ENABLE),
gsDPPipeSync(),
gsSPEndDisplayList(),
};
/* Clear ZBuffer DL. */
Gfx N64DLclearZbuffer[] =
{
gsDPSetColorImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, OS_K0_TO_PHYSICAL(_zbuf)),
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_FILL),
gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF),
gsDPSetFillColor(GPACK_ZDZ(G_MAXFBZ, 0) << 16 | GPACK_ZDZ(G_MAXFBZ, 0)),
gsDPFillRectangle(0, 0, SCREEN_WIDTH-1, SCREEN_HEIGHT-1),
gsDPNoOp(),
gsDPPipeSync(),
gsSPEndDisplayList(),
};
/* Setup 3D rendering mode. */
Gfx N64DLset3dRenderMode[] =
{
gsSPClearGeometryMode(G_SHADE | G_SHADING_SMOOTH | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD ),
gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH | G_CULL_BACK | G_ZBUFFER),
gsDPSetCycleType(G_CYC_1CYCLE),
gsDPPipelineMode(G_PM_1PRIMITIVE),
gsDPSetRenderMode(G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2),
gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),
gsDPSetTextureDetail(G_TD_CLAMP),
gsDPSetTexturePersp (G_TP_PERSP),
gsDPSetTextureLOD (G_TL_TILE),
gsDPSetTextureFilter (G_TF_BILERP),
gsDPSetTextureConvert(G_TC_FILT),
gsDPSetTextureLUT (G_TT_NONE),
gsDPSetCombineKey(G_CK_NONE),
gsDPSetAlphaCompare(G_AC_NONE),
gsSPTexture(0x8000, 0x8000, 0, 0, G_ON),
gsDPPipeSync(),
gsSPEndDisplayList()
};
void N64setViewPort(int Xs, int Ys, int Xt, int Yt)
{
vp.vp.vscale[0]= Xs<<1;
vp.vp.vscale[1]= Ys<<1;
vp.vp.vtrans[0]= Xt<<1;
vp.vp.vtrans[1]= Yt<<1;
}
void N64clearScreen(Gfx** l)
{
Gfx* dl;
dl = *l;
gDPPipeSync(dl++);
gDPSetCycleType(dl++, G_CYC_FILL);
gDPSetRenderMode(dl++, G_RM_OPA_SURF, G_RM_OPA_SURF);
gDPSetFillColor(dl++, ScreenClearColor);
gDPFillRectangle(dl++, 0, 0, SCREEN_WIDTH-1, SCREEN_HEIGHT-1);
gDPNoOp(dl++);
gDPPipeSync(dl++);
*l = dl ;
}
/* Initialize main displaylist. */
void N64initDL(Gfx** DL_Pos, Gfx* DL_Start, char* rsp_static_addr, Dynamic* generate, u16* CFB, u16 cfbflag, u16 zbufflag)
{
Gfx* glistp;
int i;
glistp = *DL_Pos;
gSPSegment(glistp++, 0, 0x0);
gSPSegment(glistp++, STATIC_SEG, OS_K0_TO_PHYSICAL(rsp_static_addr));
gSPSegment(glistp++, DYNAMIC_SEG, OS_K0_TO_PHYSICAL(generate));
gSPDisplayList(glistp++, N64DLinitRSP);
gSPDisplayList(glistp++, N64DLinitRDP);
if(cfbflag == YES)
{
gDPSetColorImage(glistp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, OS_K0_TO_PHYSICAL(CFB));
N64clearScreen(&glistp);
}
if(zbufflag == YES)
gSPDisplayList(glistp++, N64DLclearZbuffer);
gDPSetColorImage(glistp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, OS_K0_TO_PHYSICAL(CFB));
gSPDisplayList(glistp++, N64DLset3dRenderMode);
gDPSetDepthImage(glistp++, OS_K0_TO_PHYSICAL(_zbuf));
*DL_Pos = glistp;
}
/* End main displaylist. */
void N64terminateDL(Gfx** DL_Pos)
{
Gfx* glistp;
glistp = *DL_Pos;
gDPFullSync(glistp++); /* Only need this if you want 'accurate' SP done? */
gSPEndDisplayList(glistp++);
*DL_Pos = glistp;
}
/* Swap color frame buffers. */
void N64swapCFB()
{
static int first=1;
if(first)
{
osViBlack(FALSE);
first = 0;
}
osViSwapBuffer(Logical_CFB);
CFB_Count++;
if (CFB_Count >= NUM_CFB)
CFB_Count = 0;
Logical_CFB = _cfb[CFB_Count];
CFB_NextCount = CFB_Count+1;
if(CFB_NextCount >= NUM_CFB)
CFB_NextCount = 0;
Next_CFB = _cfb[CFB_NextCount];
}
/* Wait for Vertical Retrace. */
void N64waitVRT()
{
if(MQ_IS_FULL(&RetraceMessageQ))
osRecvMesg(&RetraceMessageQ, NULL, OS_MESG_BLOCK);
osRecvMesg(&RetraceMessageQ, NULL, OS_MESG_BLOCK);
}
/* Wait on RDP. */
void N64waitRDP(int first)
{
if(!first)
osRecvMesg(&RDPDoneMessageQ, NULL, OS_MESG_BLOCK);
}
/* Wait for RSP. */
void N64waitRSP(int first)
{
if(!first)
osRecvMesg(&RSPDoneMessageQ, NULL, OS_MESG_BLOCK);
}
/* Start rendering task and load microcode. */
void N64initTask(OSTask* task, Gfx* gdl_end, Gfx* gdl_start)
{
task->t.type = M_GFXTASK;
task->t.flags = 0;
task->t.ucode_boot = rspbootTextStart;
task->t.ucode_boot_size=((u32)rspbootTextEnd - (u32)rspbootTextStart);
task->t.ucode = gspF3DEX_fifoTextStart;
task->t.ucode_size = SP_UCODE_SIZE;
task->t.ucode_data = gspF3DEX_fifoDataStart;
task->t.ucode_data_size = SP_UCODE_DATA_SIZE;
task->t.dram_stack = (u64*)_rspdrambuf;
task->t.dram_stack_size = SP_DRAM_STACK_SIZE8;
task->t.output_buff = fifobuffer;
task->t.output_buff_size = (u64*)fifosize;
task->t.data_ptr = (u64*)gdl_start;
task->t.data_size = ((int) gdl_end - (int) gdl_start);
task->t.yield_data_ptr = 0;
task->t.yield_data_size = 0;
}

32
mupen64plus/graphics.h Normal file
View file

@ -0,0 +1,32 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - graphics.h *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Include graphics models, textures, and sprites here. */
#include "assets/logo_n.h"
#include "assets/logo_env.h"
#include "assets/box_n.h"
#include "sprites/fade.h"

107
mupen64plus/hardware.h Normal file
View file

@ -0,0 +1,107 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - hardware.h *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Frame buffer variables. */
#ifdef SCREEN_BPP_8
/* 8-bit CFB defines. */
u8* Logical_CFB = _cfb[0];
u8* Next_CFB = _cfb[1];
u8* Next2_CFB = _cfb[2];
u16 CFB_Count = 0; /* Current logical CFB. */
u16 CFB_NextCount = 1; /* Next logical CFB. */
u16 CFB_NextCount2 = 2; /* Second next logical CFB. */
#else
#ifdef SCREEN_BPP_16
/* 16-bit CFB defines. */
u16* Logical_CFB = _cfb[0];
u16* Next_CFB = _cfb[1];
u16* Next2_CFB = _cfb[2];
u16 CFB_Count = 0; /* Current logical CFB. */
u16 CFB_NextCount = 1; /* Next logical CFB. */
u16 CFB_NextCount2 = 2; /* Second next logical CFB. */
#else
#ifdef SCREEN_BPP_32
/* 32-bit CFB defines. */
u32* Logical_CFB = _cfb[0];
u32* Next_CFB = _cfb[1];
u32* Next2_CFB = _cfb[2];
u16 CFB_Count = 0; /* Current logical CFB. */
u16 CFB_NextCount = 1; /* Next logical CFB. */
u16 CFB_NextCount2 = 2; /* Second next logical CFB. */
#endif
#endif
#endif
/* FIFO size */
u8* fifosize;
/* Tasks */
OSTask task[NUM_CFB];
/* Dynamic data */
Dynamic dynamic[NUM_CFB];
/* Threads */
static OSThread mainThread;
static OSThread gameThread;
/* Stacks */
u64 bootStack[STACKSIZE/8]; /* For boot code. Can reuse on boot code exit. */
u64 mainStack[STACKSIZE/8]; /* Stacks for threads... */
u64 gameStack[STACKSIZE/8];
/* Message queues. */
OSMesg PiMessages[PI_MSGQUEUE_SIZE];
OSMesgQueue PiMessageQ;
OSMesg SiMessages;
OSMesgQueue SiMessageQ;
OSMesg DMAMessages[DMA_MSGQUEUE_SIZE];
OSMesgQueue DMAMessageQ;
OSMesg RDPDoneMessages[RDPDONE_MSGQUEUE_SIZE];
OSMesgQueue RDPDoneMessageQ;
OSMesg RSPDoneMessages[RSPDONE_MSGQUEUE_SIZE];
OSMesgQueue RSPDoneMessageQ;
OSMesg RetraceMessages[RETRACE_MSGQUEUE_SIZE];
OSMesgQueue RetraceMessageQ;
OSMesg dummyMsg;
/* RSP */
char *rsp_static_addr; /* R4300 addr where rsp_static segment loaded */
char *rsp_static_end; /* R4300 addr+1 for end of the load region */
u32 rsp_static_len ;
/* Viewport structure */
Vp vp =
{
SCREEN_WIDTH*2, SCREEN_HEIGHT*2, G_MAXZ/2, 0, /* scale */
SCREEN_WIDTH*2, SCREEN_HEIGHT*2, G_MAXZ/2, 0, /* translate */
};
/* Screen clear color */
u32 ScreenClearColor = GPACK_RGBA5551(0, 0, 0, 1);

View file

@ -0,0 +1,191 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - config.h *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef __CONFIG_H__
#define __CONFIG_H__
#include <ultra64.h>
/* Controllers */
#define NUM_CONT 4
/* Screen */
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
#define SCREEN_BPP_16
#define SCREEN_MODE OS_VI_NTSC_LAN1 /* 16-bit 320x240 */
/* #define SCREEN_MODE OS_VI_NTSC_LAN2 /* 32-bit 320x240 */
/* #define SCREEN_MODE OS_VI_NTSC_HAN1 /* 16-bit 640x480 normal */
/* #define SCREEN_MODE OS_VI_NTSC_HAF1 /* 16-bit 640x480 deflicker */
#define NUM_CFB 2
/* Maximum items drawn at once. */
#define MAX_ENTITIES 128
/* Stack size. */
#define STACKSIZE 0x2000
/* FIFO buffer size. */
#define FIFOSIZE 131072 /* will require 256k */
/* RSP segment numbers. */
#define STATIC_SEG 1
#define DYNAMIC_SEG 2
/* Message queue lengths. */
#define PI_MSGQUEUE_SIZE 8
#define DMA_MSGQUEUE_SIZE 1
#define RDPDONE_MSGQUEUE_SIZE 1
#define RSPDONE_MSGQUEUE_SIZE 1
#define RETRACE_MSGQUEUE_SIZE 1
/* Main display list size. */
#define GDL_SIZE 32768
/* Thread priorities. */
#define MAIN_PRIORITY 10
#define GAME_PRIORITY 10
/* Thread ID. */
#define MAIN_ID 3
#define GAME_ID 4
/* Misc defines. */
#define NO 0
#define YES 1
#define _rsp_staticSegmentRomStart ((u32)_static_seg_org)
#define _rsp_staticSegmentRomEnd ((u32)_static_seg_org+(u32)_static_seg_size)
#define _cfbSegmentStart (_cfb_obj)
#define _codeSegmentEnd ((u32)_code_bss_obj+(u32)_code_bss_size)
typedef struct
{
Mtx proj;
Mtx view;
Mtx xform[MAX_ENTITIES];
Gfx glist[GDL_SIZE];
}
Dynamic;
extern u32 ScreenClearColor;
extern u64 _rspdrambuf[];
extern u16 _zbuf[];
/* CFB */
#ifdef SCREEN_BPP_8
extern u8 _cfb[NUM_CFB][SCREEN_WIDTH * SCREEN_HEIGHT]; /* 8-bit */
#else
#ifdef SCREEN_BPP_16
extern u16 _cfb[NUM_CFB][SCREEN_WIDTH * SCREEN_HEIGHT]; /* 16-bit */
#else
#ifdef SCREEN_BPP_32
extern u32 _cfb[NUM_CFB][SCREEN_WIDTH * SCREEN_HEIGHT]; /* 32-bit */
#endif
#endif
#endif
/* Frame buffer variables. */
#ifdef SCREEN_BPP_8
extern u8* Logical_CFB; /* 8-bit */
extern u8* Next_CFB;
extern u8* Next2_CFB;
extern u16 CFB_Count;
extern u16 CFB_NextCount;
extern u16 CFB_NextCount2;
#else
#ifdef SCREEN_BPP_16
extern u16* Logical_CFB; /* 16-bit */
extern u16* Next_CFB;
extern u16* Next2_CFB;
extern u16 CFB_Count;
extern u16 CFB_NextCount;
extern u16 CFB_NextCount2;
#else
#ifdef SCREEN_BPP_32
extern u32* Logical_CFB; /* 32-bit */
extern u32* Next_CFB;
extern u32* Next2_CFB;
extern u16 CFB_Count;
extern u16 CFB_NextCount;
extern u16 CFB_NextCount2;
#endif
#endif
#endif
extern Gfx* gdl_end;
extern Gfx* gdl_start;
extern OSTask task[];
extern Dynamic* generate;
extern int entity;
extern char* rsp_static_addr;
extern char* rsp_static_end;
extern u32 rsp_static_len;
extern Gfx rspinit_dl[];
extern Gfx rdpinit_dl[];
extern Gfx scrnclr_dl[];
extern Vp vp;
/* Message queues. */
extern OSMesg PiMessages[];
extern OSMesgQueue PiMessageQ;
extern OSMesg DMAMessages[];
extern OSMesgQueue DMAMessageQ;
extern OSMesg RDPDoneMessages[];
extern OSMesgQueue RDPDoneMessageQ;
extern OSMesg RSPDoneMessages[];
extern OSMesgQueue RSPDoneMessageQ;
extern OSMesg RetraceMessages[];
extern OSMesgQueue RetraceMessageQ;
/* Symbols to tell us where various segments are
* in cartridge ROM, and in RDRAM.
*/
extern char _static_seg_org[];
extern char _static_seg_size[];
extern char _static_seg_obj[];
extern char _rom_seg_org[];
extern char _rom_seg_size[];
extern char _cfb_obj[];
extern char _code_bss_obj[];
extern char _code_bss_size[];
extern u64 fifobuffer[];
extern u8* fifosize;
extern Gfx N64DLinitRSP[];
extern Gfx N64DLinitRDP[];
extern Gfx N64DLclearZbuffer[];
extern Gfx N64DLset3dRenderMode[];
extern Vp vp;
extern Lights1 light1;
void boot(void*);
#endif /* __CONFIG_H__ */

View file

@ -0,0 +1,98 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - helpfunc.h *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Reimplemented standard math functions. */
float pow(float inp, int to);
float atan(float inp);
float fabs(float inp);
float sgn(float inp);
float ceil(float inp);
/* Returns the arctangent, if given angle input is between -1 and 1 radians.
* Uses an approximation of the Taylor series. Warning, slow.
*/
float atan(float inp)
{
float result = inp;
int addsub = 0;
int i = 0;
for(i=3; i<17; i+=2)
{
if(addsub == 0)
{
result -= pow(inp,i)/i;
addsub = 1;
}
else
{
result += pow(inp,i)/i;
addsub = 0;
}
}
return result;
}
/* Take a base inp to a (whole number) power to. */
float pow(float inp, int to)
{
float result = inp;
int i = 0;
for(i = 1; i<to; ++i)
result *= inp;
return result;
}
/* Returns -1 if inp is negative or 1 if inp is positive. */
float sgn(float inp)
{
if(inp > 0)
return 1.0;
if(inp < 0)
return -1.0;
if(inp == 0)
return 0.0;
}
/* Returns absolute value. |inp| */
float fabs(float inp)
{
if (inp < 0)
return -inp;
else
return inp;
}
/* Rounds up to the next whole number. */
float ceil(float inp)
{
int temp = 0;
temp = (int)inp;
if ((float)temp > inp)
return (float)temp;
else
return (float)temp+1;
}

View file

@ -0,0 +1,40 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - types.h *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Type definitions. */
typedef float vec3_t[3];
typedef struct {
float x;
float y;
} vec2;
/* Simple 3d object. */
typedef struct {
vec3_t pos;
vec3_t mov; /* For camera interpolation. */
vec3_t rot;
} simpleObj;

33
mupen64plus/make Normal file
View file

@ -0,0 +1,33 @@
#/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# * Mupen64plus - make *
# * Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
# * Copyright (C) 2008 Marshallh *
# * *
# * 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 2 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, write to the *
# * Free Software Foundation, Inc., *
# * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@echo off
del demo.v64
set path=C:\n64\bin
set PSYQ_PATH=C:\n64\bin
psymake /f makefile.mak
ren demo.bin demo.v64
del demo.sym
del demo.map

196
mupen64plus/sprite.h Normal file
View file

@ -0,0 +1,196 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - sprite.h *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Functions for drawing 32-bit alpha-blended sprites. */
void drawString(Gfx** glistp, int face, int x, int y, char* inpStr, f32 scaleX, f32 scaleY, int alpha);
void drawChar(Gfx** glistp, int face, int ch, int x, int y, f32 scaleX, f32 scaleY, int alpha);
void drawSprite(Gfx** glistp, void *buf, int x, int y, int width, int height, f32 scale_x, f32 scale_y, int alphabit);
void SpriteFinish(Gfx** glistp);
void SpriteInit(Gfx** glistp);
#define NUM_template_BMS (NUM_DL(52))
static Gfx sprite_dl[NUM_DL(NUM_template_BMS)];
Sprite default_sprite = {
0,0, /* position: x,y */
0,0, /* sprite size in texels: x,y */
1.0,1.0, /* sprite scale: x,y */
0,0, /* explosion: x,y */
3, /* attribute: just copy :) */
0x1234, /* sprite depth: z */
255,255,255,255, /* sprite coloration RGBA */
0,0,NULL, /* color lookup table: start_index, length, address */
0,1, /* sprite bitmap index: start_index, increment */
1, /* number of bitmaps */
1, /* number of dl locations allocated */
0,0, /* sprite bitmap height: used_height, physical height */
G_IM_FMT_RGBA, /* sprite bitmap format */
G_IM_SIZ_32b, /* sprite bitmap texel size */
NULL, /* pointer to bitmaps */
sprite_dl, /* rsp_dl: display list memory */
NULL, /* rsp_next_dl: dynamic_dl pointer */
0,0 /* texture fractional offsets */
};
void drawString(Gfx** glistp, int face, int x, int y, char* inpStr, f32 scaleX, f32 scaleY, int alpha)
{
int i = 0;
int fontID = 0;
int sx = x;
int sy = y;
char ch;
for(i = 0; i < strlen(inpStr); i++)
{
fontID = 1024;
ch = inpStr[i];
switch(ch)
{
case 'a': {fontID = 0; break;}
case 'b': {fontID = 1; break;}
case 'c': {fontID = 2; break;}
case 'd': {fontID = 3; break;}
case 'e': {fontID = 4; break;}
case 'f': {fontID = 5; break;}
case 'g': {fontID = 6; break;}
case 'h': {fontID = 7; break;}
case 'i': {fontID = 8; break;}
case 'j': {fontID = 9; break;}
case 'k': {fontID = 10; break;}
case 'l': {fontID = 11; break;}
case 'm': {fontID = 12; break;}
case 'n': {fontID = 13; break;}
case 'o': {fontID = 14; break;}
case 'p': {fontID = 15; break;}
case 'q': {fontID = 16; break;}
case 'r': {fontID = 17; break;}
case 's': {fontID = 18; break;}
case 't': {fontID = 19; break;}
case 'u': {fontID = 20; break;}
case 'v': {fontID = 21; break;}
case 'w': {fontID = 22; break;}
case 'x': {fontID = 23; break;}
case 'y': {fontID = 24; break;}
case 'z': {fontID = 25; break;}
case '0': {fontID = 26; break;}
case '1': {fontID = 27; break;}
case '2': {fontID = 28; break;}
case '3': {fontID = 29; break;}
case '4': {fontID = 30; break;}
case '5': {fontID = 31; break;}
case '6': {fontID = 32; break;}
case '7': {fontID = 33; break;}
case '8': {fontID = 34; break;}
case '9': {fontID = 35; break;}
case '"': {fontID = 36; break;}
case '-': {fontID = 37; break;}
case '=': {fontID = 38; break;}
case '+': {fontID = 39; break;}
case '!': {fontID = 40; break;}
case '@': {fontID = 41; break;}
case ':': {fontID = 42; break;}
case '[': {fontID = 43; break;}
case ']': {fontID = 44; break;}
case '&': {fontID = 45; break;}
case '*': {fontID = 46; break;}
case '(': {fontID = 47; break;}
case ')': {fontID = 48; break;}
case '.': {fontID = 49; break;}
case ',': {fontID = 50; break;}
case '/': {fontID = 51; break;}
}
if(fontID != 1024)
{
drawChar(glistp, face, fontID, sx, sy, scaleX, scaleY, alpha);
/* font structures not included */
/* sx += (f32)(font[face*52 + fontID].width + 2) * scaleX; */
}
else
sx += 8.0*scaleX;
if(ch == '\n')
{
sy+= (30.0)*scaleY;
sx = x;
}
}
}
void drawChar(Gfx** glistp, int face, int ch, int x, int y, f32 scaleX, f32 scaleY, int alpha)
{
/* drawSprite(glistp, font[ch+face*52].buf, x, y, 32, 32, scaleX, scaleY, alpha); */
}
void drawSprite(Gfx** glistp, void* buf, int x, int y, int width, int height, f32 scale_x, f32 scale_y, int alphabit)
{
Sprite *sp;
Gfx *gxp, *dl;
Bitmap bm = {width, width, 0, 0, buf, height, 0};
gxp = *glistp;
sp = &default_sprite;
sp->x = x;
sp->y = y;
sp->width = bm.width;
sp->height = bm.actualHeight;
sp->bmheight = bm.actualHeight;
sp->bmHreal = bm.actualHeight;
sp->bitmap = &bm;
spScale(sp, scale_x, scale_y);
spColor(sp, 255, 255, 255, alphabit);
dl = spDraw(sp);
gSPDisplayList(gxp++, dl);
*glistp = gxp;
}
void SpriteFinish(Gfx** glistp)
{
Gfx *gxp;
gxp = *glistp;
spFinish(&gxp);
*glistp = (gxp-1); /* Don't use final EndDisplayList() */
}
void SpriteInit(Gfx** glistp)
{
Gfx* gxp;
gxp = *glistp;
spInit(&gxp);
default_sprite.rsp_dl_next = default_sprite.rsp_dl;
*glistp = gxp;
}

441
mupen64plus/sprites/fade.h Normal file
View file

@ -0,0 +1,441 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - fade.h *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Sprites for fading in and out of scenes. */
/* All 32-bit RGBA format, 32x32. */
unsigned int fade_black[] =
{
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF
};
unsigned int fade_white[] =
{
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF
};

26
mupen64plus/stack.c Normal file
View file

@ -0,0 +1,26 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - stack.c *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <ultra64.h>
#include "include/config.h"
u64 _rspdrambuf[SP_DRAM_STACK_SIZE8]; /* Used for matrix stack. */

27
mupen64plus/zbuf.c Normal file
View file

@ -0,0 +1,27 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Mupen64plus - zbuf.c *
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
* Copyright (C) 2008 Marshallh *
* *
* 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 2 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, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <ultra64.h>
#include "include/config.h"
u16 _zbuf[SCREEN_WIDTH * SCREEN_HEIGHT]; /* Always 16-bit. */