Merge branch 'master' of https://github.com/project64/project64
This commit is contained in:
commit
d70ad198b4
|
@ -3546,6 +3546,7 @@ filtering=1
|
||||||
Good Name=Tom Clancy's Rainbow Six (E)
|
Good Name=Tom Clancy's Rainbow Six (E)
|
||||||
Internal Name=RAINBOW SIX
|
Internal Name=RAINBOW SIX
|
||||||
depthmode=1
|
depthmode=1
|
||||||
|
fb_render=1
|
||||||
increase_texrect_edge=1
|
increase_texrect_edge=1
|
||||||
swapmode=0
|
swapmode=0
|
||||||
|
|
||||||
|
@ -3553,6 +3554,7 @@ swapmode=0
|
||||||
Good Name=Tom Clancy's Rainbow Six (F)
|
Good Name=Tom Clancy's Rainbow Six (F)
|
||||||
Internal Name=RAINBOW SIX
|
Internal Name=RAINBOW SIX
|
||||||
depthmode=1
|
depthmode=1
|
||||||
|
fb_render=1
|
||||||
increase_texrect_edge=1
|
increase_texrect_edge=1
|
||||||
swapmode=0
|
swapmode=0
|
||||||
|
|
||||||
|
@ -3560,6 +3562,7 @@ swapmode=0
|
||||||
Good Name=Tom Clancy's Rainbow Six (G)
|
Good Name=Tom Clancy's Rainbow Six (G)
|
||||||
Internal Name=RAINBOW SIX
|
Internal Name=RAINBOW SIX
|
||||||
depthmode=1
|
depthmode=1
|
||||||
|
fb_render=1
|
||||||
increase_texrect_edge=1
|
increase_texrect_edge=1
|
||||||
swapmode=0
|
swapmode=0
|
||||||
|
|
||||||
|
@ -3567,6 +3570,7 @@ swapmode=0
|
||||||
Good Name=Tom Clancy's Rainbow Six (U)
|
Good Name=Tom Clancy's Rainbow Six (U)
|
||||||
Internal Name=RAINBOW SIX
|
Internal Name=RAINBOW SIX
|
||||||
depthmode=1
|
depthmode=1
|
||||||
|
fb_render=1
|
||||||
increase_texrect_edge=1
|
increase_texrect_edge=1
|
||||||
swapmode=0
|
swapmode=0
|
||||||
|
|
||||||
|
|
|
@ -193,6 +193,7 @@ RDRAM Size=8
|
||||||
Good Name=64 de Hakken!! Tamagotchi - Minna de Tamagotchi World (J)
|
Good Name=64 de Hakken!! Tamagotchi - Minna de Tamagotchi World (J)
|
||||||
Internal Name=ÐÝÅÃÞÀϺޯÁÜ°ÙÄÞ
|
Internal Name=ÐÝÅÃÞÀϺޯÁÜ°ÙÄÞ
|
||||||
Status=Issues (plugin)
|
Status=Issues (plugin)
|
||||||
|
Plugin Note=[video] HLE incorrect sprites
|
||||||
Counter Factor=1
|
Counter Factor=1
|
||||||
Save Type=FlashRam
|
Save Type=FlashRam
|
||||||
|
|
||||||
|
@ -1133,7 +1134,7 @@ RDRAM Size=8
|
||||||
Good Name=Conker's Bad Fur Day (E)
|
Good Name=Conker's Bad Fur Day (E)
|
||||||
Internal Name=CONKER BFD
|
Internal Name=CONKER BFD
|
||||||
Status=Compatible
|
Status=Compatible
|
||||||
Plugin Note=[Glide64] broken mipmapping, certain FB effects missing.
|
Plugin Note=[Glide64] broken mipmapping, certain FB effects missing
|
||||||
32bit=No
|
32bit=No
|
||||||
Clear Frame=2
|
Clear Frame=2
|
||||||
Culling=1
|
Culling=1
|
||||||
|
@ -1150,7 +1151,7 @@ ViRefresh=2200
|
||||||
Good Name=Conker's Bad Fur Day (U) (Debug Version)
|
Good Name=Conker's Bad Fur Day (U) (Debug Version)
|
||||||
Internal Name=CONKER BFD DEBUG
|
Internal Name=CONKER BFD DEBUG
|
||||||
Status=Compatible
|
Status=Compatible
|
||||||
Plugin Note=[Glide64] broken mipmapping, certain FB effects missing.
|
Plugin Note=[Glide64] broken mipmapping, certain FB effects missing
|
||||||
32bit=No
|
32bit=No
|
||||||
Clear Frame=2
|
Clear Frame=2
|
||||||
Culling=1
|
Culling=1
|
||||||
|
@ -1167,7 +1168,7 @@ ViRefresh=2200
|
||||||
Good Name=Conker's Bad Fur Day (U) (ECTS Demo)
|
Good Name=Conker's Bad Fur Day (U) (ECTS Demo)
|
||||||
Internal Name=CBFD ECTS
|
Internal Name=CBFD ECTS
|
||||||
Status=Compatible
|
Status=Compatible
|
||||||
Plugin Note=[Glide64] broken mipmapping, certain FB effects missing.
|
Plugin Note=[Glide64] broken mipmapping, certain FB effects missing
|
||||||
32bit=No
|
32bit=No
|
||||||
Clear Frame=2
|
Clear Frame=2
|
||||||
Culling=1
|
Culling=1
|
||||||
|
@ -1185,7 +1186,7 @@ ViRefresh=2200
|
||||||
Good Name=Conker's Bad Fur Day (U)
|
Good Name=Conker's Bad Fur Day (U)
|
||||||
Internal Name=CONKER BFD
|
Internal Name=CONKER BFD
|
||||||
Status=Compatible
|
Status=Compatible
|
||||||
Plugin Note=[Glide64] broken mipmapping, certain FB effects missing.
|
Plugin Note=[Glide64] broken mipmapping, certain FB effects missing
|
||||||
32bit=No
|
32bit=No
|
||||||
Clear Frame=2
|
Clear Frame=2
|
||||||
Culling=1
|
Culling=1
|
||||||
|
@ -3673,11 +3674,13 @@ Save Type=FlashRam
|
||||||
Good Name=NBA Hangtime (E)
|
Good Name=NBA Hangtime (E)
|
||||||
Internal Name=NBA HANGTIME
|
Internal Name=NBA HANGTIME
|
||||||
Status=Issues (plugin)
|
Status=Issues (plugin)
|
||||||
|
Plugin Note=[video] slow
|
||||||
|
|
||||||
[4E69B487-FE18E290-C:45]
|
[4E69B487-FE18E290-C:45]
|
||||||
Good Name=NBA Hangtime (U)
|
Good Name=NBA Hangtime (U)
|
||||||
Internal Name=NBA HANGTIME
|
Internal Name=NBA HANGTIME
|
||||||
Status=Issues (plugin)
|
Status=Issues (plugin)
|
||||||
|
Plugin Note=[video] slow
|
||||||
|
|
||||||
[36ACBA9B-F28D4D94-C:4A]
|
[36ACBA9B-F28D4D94-C:4A]
|
||||||
Good Name=NBA In the Zone '98 (J)
|
Good Name=NBA In the Zone '98 (J)
|
||||||
|
@ -4677,7 +4680,7 @@ Status=Compatible
|
||||||
Good Name=Rat Attack (E) (M6)
|
Good Name=Rat Attack (E) (M6)
|
||||||
Internal Name=RAT ATTACK
|
Internal Name=RAT ATTACK
|
||||||
Status=Issues (core)
|
Status=Issues (core)
|
||||||
Core Note=Interpreter only for multi
|
Core Note=Interpreter only for multiplayer
|
||||||
SMM-FUNC=0
|
SMM-FUNC=0
|
||||||
Use TLB=No
|
Use TLB=No
|
||||||
|
|
||||||
|
@ -4685,7 +4688,7 @@ Use TLB=No
|
||||||
Good Name=Rat Attack (U) (M6)
|
Good Name=Rat Attack (U) (M6)
|
||||||
Internal Name=RAT ATTACK
|
Internal Name=RAT ATTACK
|
||||||
Status=Issues (core)
|
Status=Issues (core)
|
||||||
Core Note=Interpreter only for multi
|
Core Note=Interpreter only for multiplayer
|
||||||
SMM-FUNC=0
|
SMM-FUNC=0
|
||||||
Use TLB=No
|
Use TLB=No
|
||||||
|
|
||||||
|
@ -5651,13 +5654,11 @@ RDRAM Size=8
|
||||||
Good Name=Tetrisphere (E)
|
Good Name=Tetrisphere (E)
|
||||||
Internal Name=TETRISPHERE
|
Internal Name=TETRISPHERE
|
||||||
Status=Compatible
|
Status=Compatible
|
||||||
Plugin Note=[video] slow in menus
|
|
||||||
|
|
||||||
[3C1FDABE-02A4E0BA-C:45]
|
[3C1FDABE-02A4E0BA-C:45]
|
||||||
Good Name=Tetrisphere (U)
|
Good Name=Tetrisphere (U)
|
||||||
Internal Name=TETRISPHERE
|
Internal Name=TETRISPHERE
|
||||||
Status=Compatible
|
Status=Compatible
|
||||||
Plugin Note=[video] slow in menus
|
|
||||||
|
|
||||||
[F82DD377-8C3FB347-C:58]
|
[F82DD377-8C3FB347-C:58]
|
||||||
Good Name=TG Rally 2 (E)
|
Good Name=TG Rally 2 (E)
|
||||||
|
@ -6368,7 +6369,7 @@ Good Name=Twisted Edge Extreme Snowboarding (E)
|
||||||
Internal Name=TWISTED EDGE
|
Internal Name=TWISTED EDGE
|
||||||
Status=Issues (mixed)
|
Status=Issues (mixed)
|
||||||
Core Note=Bad sound
|
Core Note=Bad sound
|
||||||
Plugin Note=[video] no fog
|
Plugin Note=[Glide64] no fog
|
||||||
32bit=No
|
32bit=No
|
||||||
Culling=1
|
Culling=1
|
||||||
RDRAM Size=8
|
RDRAM Size=8
|
||||||
|
@ -6378,7 +6379,7 @@ Good Name=Twisted Edge Extreme Snowboarding (U)
|
||||||
Internal Name=TWISTED EDGE
|
Internal Name=TWISTED EDGE
|
||||||
Status=Issues (mixed)
|
Status=Issues (mixed)
|
||||||
Core Note=Bad sound
|
Core Note=Bad sound
|
||||||
Plugin Note=[video] no fog
|
Plugin Note=[Glide64] no fog
|
||||||
32bit=No
|
32bit=No
|
||||||
Culling=1
|
Culling=1
|
||||||
RDRAM Size=8
|
RDRAM Size=8
|
||||||
|
@ -6729,7 +6730,7 @@ Plugin Note=[video] HLE square bug
|
||||||
Good Name=WinBack - Covert Operations (U)
|
Good Name=WinBack - Covert Operations (U)
|
||||||
Internal Name=WIN BACK
|
Internal Name=WIN BACK
|
||||||
Status=Compatible
|
Status=Compatible
|
||||||
Plugin Note=[video] HLE square bug.
|
Plugin Note=[video] HLE square bug
|
||||||
|
|
||||||
[54310E7D-6B5430D8-C:50]
|
[54310E7D-6B5430D8-C:50]
|
||||||
Good Name=Wipeout 64 (E)
|
Good Name=Wipeout 64 (E)
|
||||||
|
@ -8113,8 +8114,7 @@ Status=Unsupported
|
||||||
|
|
||||||
[00000000-00000000-C:4A]
|
[00000000-00000000-C:4A]
|
||||||
32bit=No
|
32bit=No
|
||||||
Core Note=Recompiler isn't working properly
|
Fixed Audio=0
|
||||||
CPU Type=Interpreter
|
|
||||||
Good Name=64DD IPL (JPN)
|
Good Name=64DD IPL (JPN)
|
||||||
RDRAM Size=8
|
RDRAM Size=8
|
||||||
Status=Issues (core)
|
Status=Compatible
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
//
|
//
|
||||||
//****************************************************************
|
//****************************************************************
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include "Gfx_1.3.h"
|
#include "Gfx_1.3.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
#include "Combine.h"
|
#include "Combine.h"
|
||||||
|
|
|
@ -37,6 +37,9 @@
|
||||||
//
|
//
|
||||||
//****************************************************************
|
//****************************************************************
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "Gfx_1.3.h"
|
#include "Gfx_1.3.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
#include "Debugger.h"
|
#include "Debugger.h"
|
||||||
|
|
|
@ -74,7 +74,7 @@ the plugin
|
||||||
#include "GlideExtensions.h"
|
#include "GlideExtensions.h"
|
||||||
#include "rdp.h"
|
#include "rdp.h"
|
||||||
#include "Keys.h"
|
#include "Keys.h"
|
||||||
#include "config.h"
|
#include "Config.h"
|
||||||
|
|
||||||
#if defined __VISUALC__
|
#if defined __VISUALC__
|
||||||
typedef unsigned char boolean;
|
typedef unsigned char boolean;
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
//
|
//
|
||||||
//****************************************************************
|
//****************************************************************
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include <Common/StdString.h>
|
#include <Common/StdString.h>
|
||||||
#include "Gfx_1.3.h"
|
#include "Gfx_1.3.h"
|
||||||
#include "Version.h"
|
#include "Version.h"
|
||||||
|
|
|
@ -41,6 +41,8 @@
|
||||||
//
|
//
|
||||||
//****************************************************************
|
//****************************************************************
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
static inline void mirror32bS(uint8_t *tex, uint8_t *start, int width, int height, int mask, int line, int full, int count)
|
static inline void mirror32bS(uint8_t *tex, uint8_t *start, int width, int height, int mask, int line, int full, int count)
|
||||||
{
|
{
|
||||||
uint32_t *v8;
|
uint32_t *v8;
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
//
|
//
|
||||||
//****************************************************************
|
//****************************************************************
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include "Gfx_1.3.h"
|
#include "Gfx_1.3.h"
|
||||||
#include "TexBuffer.h"
|
#include "TexBuffer.h"
|
||||||
#include "CRC.h"
|
#include "CRC.h"
|
||||||
|
|
|
@ -42,6 +42,8 @@
|
||||||
#include "TexLoad16b.h"
|
#include "TexLoad16b.h"
|
||||||
#include "TexLoad32b.h"
|
#include "TexLoad32b.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
uint32_t LoadNone(uintptr_t /*dst*/, uintptr_t /*src*/, int /*wid_64*/, int /*height*/, int /*line*/, int /*real_width*/, int /*tile*/)
|
uint32_t LoadNone(uintptr_t /*dst*/, uintptr_t /*src*/, int /*wid_64*/, int /*height*/, int /*line*/, int /*real_width*/, int /*tile*/)
|
||||||
{
|
{
|
||||||
memset(texture, 0, 4096 * 4);
|
memset(texture, 0, 4096 * 4);
|
||||||
|
|
|
@ -38,6 +38,8 @@
|
||||||
//****************************************************************
|
//****************************************************************
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "Gfx_1.3.h"
|
#include "Gfx_1.3.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
#include "Combine.h"
|
#include "Combine.h"
|
||||||
|
|
|
@ -38,6 +38,8 @@
|
||||||
//****************************************************************
|
//****************************************************************
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "Gfx_1.3.h"
|
#include "Gfx_1.3.h"
|
||||||
#include "3dmath.h"
|
#include "3dmath.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
|
|
|
@ -201,7 +201,7 @@ void DiskBMUpdate()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Read Data
|
//Read Data
|
||||||
if (((g_Reg->ASIC_CUR_TK >> 16) & 0xFFF) == 6 && g_Reg->ASIC_CUR_SECTOR == 0)
|
if (((g_Reg->ASIC_CUR_TK >> 16) & 0x1FFF) == 6 && g_Reg->ASIC_CUR_SECTOR == 0)
|
||||||
{
|
{
|
||||||
g_Reg->ASIC_STATUS &= ~DD_STATUS_DATA_RQ;
|
g_Reg->ASIC_STATUS &= ~DD_STATUS_DATA_RQ;
|
||||||
g_Reg->ASIC_BM_STATUS |= DD_BM_STATUS_MICRO;
|
g_Reg->ASIC_BM_STATUS |= DD_BM_STATUS_MICRO;
|
||||||
|
|
|
@ -16,6 +16,6 @@ public:
|
||||||
static uint8_t CalculateCrc(uint8_t * DataToCrc);
|
static uint8_t CalculateCrc(uint8_t * DataToCrc);
|
||||||
static void Load();
|
static void Load();
|
||||||
static void Format(int32_t Control);
|
static void Format(int32_t Control);
|
||||||
static void ReadFrom(int32_t Control, uint8_t * command);
|
static void ReadFrom(int32_t Control, uint32_t address, uint8_t * data);
|
||||||
static void WriteTo(int32_t Control, uint8_t * command);
|
static void WriteTo(int32_t Control, uint32_t address, uint8_t * data);
|
||||||
};
|
};
|
|
@ -106,28 +106,24 @@ uint8_t Mempak::CalculateCrc(uint8_t * DataToCrc)
|
||||||
return CRC;
|
return CRC;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mempak::ReadFrom(int32_t Control, uint8_t * command)
|
void Mempak::ReadFrom(int32_t Control, uint32_t address, uint8_t * data)
|
||||||
{
|
{
|
||||||
uint32_t address = (command[3] << 8) | (command[4] & 0xE0);
|
|
||||||
|
|
||||||
if (address < 0x8000)
|
if (address < 0x8000)
|
||||||
{
|
{
|
||||||
memcpy(&command[5], &Mempaks[Control][address], 0x20);
|
memcpy(data, &Mempaks[Control][address], 0x20);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
memset(&command[5], 0x00, 0x20);
|
memset(data, 0x00, 0x20);
|
||||||
/* Rumble pack area */
|
/* Rumble pack area */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mempak::WriteTo(int32_t Control, uint8_t * command)
|
void Mempak::WriteTo(int32_t Control, uint32_t address, uint8_t * data)
|
||||||
{
|
{
|
||||||
uint32_t address = (command[3] << 8) | (command[4] & 0xE0);
|
|
||||||
|
|
||||||
if (address < 0x8000)
|
if (address < 0x8000)
|
||||||
{
|
{
|
||||||
memcpy(&Mempaks[Control][address], &command[5], 0x20);
|
memcpy(&Mempaks[Control][address], data, 0x20);
|
||||||
|
|
||||||
FILE* mempak = fopen(MempakNames[Control], "wb");
|
FILE* mempak = fopen(MempakNames[Control], "wb");
|
||||||
fwrite(Mempaks[Control], 1, 0x8000, mempak);
|
fwrite(Mempaks[Control], 1, 0x8000, mempak);
|
||||||
|
|
|
@ -468,11 +468,7 @@ void CPifRam::ProcessControllerCommand(int32_t Control, uint8_t * Command)
|
||||||
}
|
}
|
||||||
if (bShowPifRamErrors())
|
if (bShowPifRamErrors())
|
||||||
{
|
{
|
||||||
if (Command[0] != 1)
|
if (Command[0] != 1 || Command[1] != 3)
|
||||||
{
|
|
||||||
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
|
||||||
}
|
|
||||||
if (Command[1] != 3)
|
|
||||||
{
|
{
|
||||||
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
||||||
}
|
}
|
||||||
|
@ -499,11 +495,7 @@ void CPifRam::ProcessControllerCommand(int32_t Control, uint8_t * Command)
|
||||||
case 0x01: // read controller
|
case 0x01: // read controller
|
||||||
if (bShowPifRamErrors())
|
if (bShowPifRamErrors())
|
||||||
{
|
{
|
||||||
if (Command[0] != 1)
|
if (Command[0] != 1 || Command[1] != 4)
|
||||||
{
|
|
||||||
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
|
||||||
}
|
|
||||||
if (Command[1] != 4)
|
|
||||||
{
|
{
|
||||||
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
||||||
}
|
}
|
||||||
|
@ -520,21 +512,20 @@ void CPifRam::ProcessControllerCommand(int32_t Control, uint8_t * Command)
|
||||||
}
|
}
|
||||||
if (bShowPifRamErrors())
|
if (bShowPifRamErrors())
|
||||||
{
|
{
|
||||||
if (Command[0] != 3)
|
if (Command[0] != 3 || Command[1] != 33)
|
||||||
{
|
|
||||||
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
|
||||||
}
|
|
||||||
if (Command[1] != 33)
|
|
||||||
{
|
{
|
||||||
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Controllers[Control].Present == true)
|
if (Controllers[Control].Present == true)
|
||||||
{
|
{
|
||||||
|
uint32_t address = (Command[3] << 8) | (Command[4] & 0xE0);
|
||||||
|
uint8_t* data = &Command[5];
|
||||||
|
|
||||||
switch (Controllers[Control].Plugin)
|
switch (Controllers[Control].Plugin)
|
||||||
{
|
{
|
||||||
case PLUGIN_RUMBLE_PAK: Rumblepak::ReadFrom(Command); break;
|
case PLUGIN_RUMBLE_PAK: Rumblepak::ReadFrom(address, data); break;
|
||||||
case PLUGIN_MEMPAK: Mempak::ReadFrom(Control, Command); break;
|
case PLUGIN_MEMPAK: Mempak::ReadFrom(Control, address, data); break;
|
||||||
case PLUGIN_TANSFER_PAK: /* TODO */; break;
|
case PLUGIN_TANSFER_PAK: /* TODO */; break;
|
||||||
case PLUGIN_RAW: if (g_Plugins->Control()->ControllerCommand) { g_Plugins->Control()->ControllerCommand(Control, Command); } break;
|
case PLUGIN_RAW: if (g_Plugins->Control()->ControllerCommand) { g_Plugins->Control()->ControllerCommand(Control, Command); } break;
|
||||||
default:
|
default:
|
||||||
|
@ -562,21 +553,20 @@ void CPifRam::ProcessControllerCommand(int32_t Control, uint8_t * Command)
|
||||||
}
|
}
|
||||||
if (bShowPifRamErrors())
|
if (bShowPifRamErrors())
|
||||||
{
|
{
|
||||||
if (Command[0] != 35)
|
if (Command[0] != 35 || Command[1] != 1)
|
||||||
{
|
|
||||||
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
|
||||||
}
|
|
||||||
if (Command[1] != 1)
|
|
||||||
{
|
{
|
||||||
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
g_Notify->DisplayError("What am I meant to do with this Controller Command");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Controllers[Control].Present == true)
|
if (Controllers[Control].Present == true)
|
||||||
{
|
{
|
||||||
|
uint32_t address = (Command[3] << 8) | (Command[4] & 0xE0);
|
||||||
|
uint8_t* data = &Command[5];
|
||||||
|
|
||||||
switch (Controllers[Control].Plugin)
|
switch (Controllers[Control].Plugin)
|
||||||
{
|
{
|
||||||
case PLUGIN_MEMPAK: Mempak::WriteTo(Control, Command); break;
|
case PLUGIN_MEMPAK: Mempak::WriteTo(Control, address, data); break;
|
||||||
case PLUGIN_RUMBLE_PAK: Rumblepak::WriteTo(Control, Command); break;
|
case PLUGIN_RUMBLE_PAK: Rumblepak::WriteTo(Control, address, data); break;
|
||||||
case PLUGIN_TANSFER_PAK: /* TODO */; break;
|
case PLUGIN_TANSFER_PAK: /* TODO */; break;
|
||||||
case PLUGIN_RAW: if (g_Plugins->Control()->ControllerCommand) { g_Plugins->Control()->ControllerCommand(Control, Command); } break;
|
case PLUGIN_RAW: if (g_Plugins->Control()->ControllerCommand) { g_Plugins->Control()->ControllerCommand(Control, Command); } break;
|
||||||
}
|
}
|
||||||
|
@ -614,8 +604,7 @@ void CPifRam::ReadControllerCommand(int32_t Control, uint8_t * Command)
|
||||||
{
|
{
|
||||||
if (bShowPifRamErrors())
|
if (bShowPifRamErrors())
|
||||||
{
|
{
|
||||||
if (Command[0] != 1) { g_Notify->DisplayError("What am I meant to do with this Controller Command"); }
|
if (Command[0] != 1 || Command[1] != 4) { g_Notify->DisplayError("What am I meant to do with this Controller Command"); }
|
||||||
if (Command[1] != 4) { g_Notify->DisplayError("What am I meant to do with this Controller Command"); }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint32_t buttons = g_BaseSystem->GetButtons(Control);
|
const uint32_t buttons = g_BaseSystem->GetButtons(Control);
|
||||||
|
|
|
@ -15,29 +15,25 @@
|
||||||
#include <Project64-core/Plugins/PluginClass.h>
|
#include <Project64-core/Plugins/PluginClass.h>
|
||||||
#include <Project64-core/Plugins/ControllerPlugin.h>
|
#include <Project64-core/Plugins/ControllerPlugin.h>
|
||||||
|
|
||||||
void Rumblepak::ReadFrom(uint8_t * command)
|
void Rumblepak::ReadFrom(uint32_t address, uint8_t * data)
|
||||||
{
|
{
|
||||||
uint32_t address = (command[3] << 8) | (command[4] & 0xE0);
|
|
||||||
|
|
||||||
if ((address >= 0x8000) && (address < 0x9000))
|
if ((address >= 0x8000) && (address < 0x9000))
|
||||||
{
|
{
|
||||||
memset(&command[5], 0x80, 0x20);
|
memset(data, 0x80, 0x20);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
memset(&command[5], 0x00, 0x20);
|
memset(data, 0x00, 0x20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Rumblepak::WriteTo(int32_t Control, uint8_t * command)
|
void Rumblepak::WriteTo(int32_t Control, uint32_t address, uint8_t * data)
|
||||||
{
|
{
|
||||||
uint32_t address = (command[3] << 8) | (command[4] & 0xE0);
|
|
||||||
|
|
||||||
if ((address) == 0xC000)
|
if ((address) == 0xC000)
|
||||||
{
|
{
|
||||||
if (g_Plugins->Control()->RumbleCommand != NULL)
|
if (g_Plugins->Control()->RumbleCommand != NULL)
|
||||||
{
|
{
|
||||||
g_Plugins->Control()->RumbleCommand(Control, *(int *)(&command[5]));
|
g_Plugins->Control()->RumbleCommand(Control, *(int *)data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -13,6 +13,6 @@
|
||||||
class Rumblepak
|
class Rumblepak
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static void ReadFrom(uint8_t * command);
|
static void ReadFrom(uint32_t address, uint8_t * data);
|
||||||
static void WriteTo(int32_t Control, uint8_t * command);
|
static void WriteTo(int32_t Control, uint32_t address, uint8_t * data);
|
||||||
};
|
};
|
||||||
|
|
|
@ -219,7 +219,11 @@ bool CN64System::RunFileImage(const char * FileLoc)
|
||||||
if (g_Rom->CicChipID() == CIC_NUS_8303)
|
if (g_Rom->CicChipID() == CIC_NUS_8303)
|
||||||
{
|
{
|
||||||
//64DD IPL
|
//64DD IPL
|
||||||
g_DDRom = g_Rom;
|
if (g_DDRom == NULL)
|
||||||
|
{
|
||||||
|
g_DDRom = new CN64Rom();
|
||||||
|
}
|
||||||
|
g_DDRom->LoadN64ImageIPL(FileLoc);
|
||||||
g_Settings->SaveString(File_DiskIPLPath, FileLoc);
|
g_Settings->SaveString(File_DiskIPLPath, FileLoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5474,12 +5474,12 @@ void CRecompilerOps::COP0_MT()
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 13: //cause
|
case 13: //cause
|
||||||
|
AndConstToVariable(0xFFFFCFF, &_CP0[m_Opcode.rd], CRegName::Cop0[m_Opcode.rd]);
|
||||||
if (IsConst(m_Opcode.rt))
|
if (IsConst(m_Opcode.rt))
|
||||||
{
|
{
|
||||||
AndConstToVariable(0xFFFFCFF, &_CP0[m_Opcode.rd], CRegName::Cop0[m_Opcode.rd]);
|
|
||||||
if ((GetMipsRegLo(m_Opcode.rt) & 0x300) != 0 && bHaveDebugger()){ g_Notify->DisplayError("Set IP0 or IP1"); }
|
if ((GetMipsRegLo(m_Opcode.rt) & 0x300) != 0 && bHaveDebugger()){ g_Notify->DisplayError("Set IP0 or IP1"); }
|
||||||
}
|
}
|
||||||
else
|
else if (bHaveDebugger())
|
||||||
{
|
{
|
||||||
UnknownOpcode();
|
UnknownOpcode();
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -77,7 +77,7 @@ __declspec(dllexport) void SetSettingInfo3 (PLUGIN_SETTINGS3 * info)
|
||||||
g_PluginSettings3 = *info;
|
g_PluginSettings3 = *info;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL SettingsInitilized ( void )
|
bool SettingsInitilized(void)
|
||||||
{
|
{
|
||||||
return g_PluginInitilized;
|
return g_PluginInitilized;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ enum SETTING_DATA_TYPE {
|
||||||
};
|
};
|
||||||
|
|
||||||
// set other information about different settings
|
// set other information about different settings
|
||||||
BOOL SettingsInitilized ( void );
|
bool SettingsInitilized ( void );
|
||||||
void SetModuleName ( const char * Name );
|
void SetModuleName ( const char * Name );
|
||||||
void RegisterSetting ( short SettingID, SETTING_DATA_TYPE Type, const char * Name, const char * Category,
|
void RegisterSetting ( short SettingID, SETTING_DATA_TYPE Type, const char * Name, const char * Category,
|
||||||
unsigned int DefaultDW, const char * DefaultStr );
|
unsigned int DefaultDW, const char * DefaultStr );
|
||||||
|
|
Loading…
Reference in New Issue