nothing to see here
This commit is contained in:
parent
4a943f3a60
commit
46d05de51f
|
@ -29,7 +29,7 @@ namespace BizHawk.Client.Common
|
||||||
public static readonly CopyControllerAdapter MovieOutputHardpoint = new CopyControllerAdapter();
|
public static readonly CopyControllerAdapter MovieOutputHardpoint = new CopyControllerAdapter();
|
||||||
public static readonly MultitrackRewiringControllerAdapter MultitrackRewiringAdapter = new MultitrackRewiringControllerAdapter();
|
public static readonly MultitrackRewiringControllerAdapter MultitrackRewiringAdapter = new MultitrackRewiringControllerAdapter();
|
||||||
|
|
||||||
// dont take my word for it, since the final word is actually in RewireInputChain, but here is a guide...
|
// don't take my word for it, since the final word is actually in RewireInputChain, but here is a guide...
|
||||||
// user -> Input -> ActiveController -> UDLR -> StickyXORPlayerInputAdapter -> TurboAdapter(TBD) -> Lua(?TBD?) -> ..
|
// user -> Input -> ActiveController -> UDLR -> StickyXORPlayerInputAdapter -> TurboAdapter(TBD) -> Lua(?TBD?) -> ..
|
||||||
// .. -> MultitrackRewiringControllerAdapter -> MovieInputSourceAdapter -> (MovieSession) -> MovieOutputAdapter -> ControllerOutput(1) -> Game
|
// .. -> MultitrackRewiringControllerAdapter -> MovieInputSourceAdapter -> (MovieSession) -> MovieOutputAdapter -> ControllerOutput(1) -> Game
|
||||||
// (1)->Input Display
|
// (1)->Input Display
|
||||||
|
|
|
@ -243,7 +243,7 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
filesystemSafeName = RemoveInvalidFileSystemChars(filesystemSafeName);
|
filesystemSafeName = RemoveInvalidFileSystemChars(filesystemSafeName);
|
||||||
|
|
||||||
// zero 22-jul-2012 - i dont think this is used the same way it used to. game.Name shouldnt be a path, so this stuff is illogical.
|
// zero 22-jul-2012 - i don't think this is used the same way it used to. game.Name shouldn't be a path, so this stuff is illogical.
|
||||||
// if game.Name is a path, then someone shouldve made it not-a-path already.
|
// if game.Name is a path, then someone shouldve made it not-a-path already.
|
||||||
// return Path.Combine(Path.GetDirectoryName(filesystemSafeName), Path.GetFileNameWithoutExtension(filesystemSafeName));
|
// return Path.Combine(Path.GetDirectoryName(filesystemSafeName), Path.GetFileNameWithoutExtension(filesystemSafeName));
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
//get the current entry
|
//get the current entry
|
||||||
Texture2d currentTexture = _currentTextures[0];
|
Texture2d currentTexture = _currentTextures[0];
|
||||||
|
|
||||||
// TODO - its a bit cruddy here that we dont respect the current texture HasAlpha condition (in fact, there's no such concept)
|
// TODO - its a bit cruddy here that we don't respect the current texture HasAlpha condition (in fact, there's no such concept)
|
||||||
// we might need to deal with that in the future to fix some bugs.
|
// we might need to deal with that in the future to fix some bugs.
|
||||||
|
|
||||||
//check if its rotten and needs recreating
|
//check if its rotten and needs recreating
|
||||||
|
|
|
@ -365,7 +365,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
if (CurrentRenderTargetWrapper == CurrentControl.RenderTargetWrapper)
|
if (CurrentRenderTargetWrapper == CurrentControl.RenderTargetWrapper)
|
||||||
{
|
{
|
||||||
//dont do anything til swapbuffers
|
//don't do anything til swapbuffers
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -558,7 +558,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
if (pipeline == null)
|
if (pipeline == null)
|
||||||
{
|
{
|
||||||
//unbind? i dont know
|
//unbind? i don't know
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -212,7 +212,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
////as we go, look for attribute mappings (CGC will happily reorder and rename our attribute mappings)
|
////as we go, look for attribute mappings (CGC will happily reorder and rename our attribute mappings)
|
||||||
////what's more it will _RESIZE_ them but this seems benign..somehow..
|
////what's more it will _RESIZE_ them but this seems benign..somehow..
|
||||||
////WELLLLLLL we wish we could do that by names
|
////WELLLLLLL we wish we could do that by names
|
||||||
////but the shaders dont seem to be adequate quality (oddly named attributes.. texCoord vs texCoord1). need to use semantics instead.
|
////but the shaders don't seem to be adequate quality (oddly named attributes.. texCoord vs texCoord1). need to use semantics instead.
|
||||||
//foreach (var kvp in vertexLayout.Items)
|
//foreach (var kvp in vertexLayout.Items)
|
||||||
//{
|
//{
|
||||||
// string name = kvp.Value.Name;
|
// string name = kvp.Value.Name;
|
||||||
|
@ -264,7 +264,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
//glValidateProgram checks to see whether the executables contained in program can execute given the current OpenGL state
|
//glValidateProgram checks to see whether the executables contained in program can execute given the current OpenGL state
|
||||||
//This function is typically useful only during application development.
|
//This function is typically useful only during application development.
|
||||||
//
|
//
|
||||||
//So, this is no big deal. we shouldnt be calling validate right now anyway.
|
//So, this is no big deal. we shouldn't be calling validate right now anyway.
|
||||||
//conclusion: glValidate is very complicated and is of virtually no use unless your draw calls are returning errors and you want to know why
|
//conclusion: glValidate is very complicated and is of virtually no use unless your draw calls are returning errors and you want to know why
|
||||||
//GL.ValidateProgram(pid);
|
//GL.ValidateProgram(pid);
|
||||||
//errcode = GL.GetError();
|
//errcode = GL.GetError();
|
||||||
|
|
|
@ -51,7 +51,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
//in case assembly resolution fails, such as if we moved them into the dll subdiretory, this event handler can reroute to them
|
//in case assembly resolution fails, such as if we moved them into the dll subdiretory, this event handler can reroute to them
|
||||||
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
|
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
|
||||||
|
|
||||||
//but before we even try doing that, whack the MOTW from everything in that directory (thats a dll)
|
//but before we even try doing that, whack the MOTW from everything in that directory (that's a dll)
|
||||||
//otherwise, some people will have crashes at boot-up due to .net security disliking MOTW.
|
//otherwise, some people will have crashes at boot-up due to .net security disliking MOTW.
|
||||||
//some people are getting MOTW through a combination of browser used to download bizhawk, and program used to dearchive it
|
//some people are getting MOTW through a combination of browser used to download bizhawk, and program used to dearchive it
|
||||||
//We need to do it here too... otherwise people get exceptions when externaltools we distribute try to startup
|
//We need to do it here too... otherwise people get exceptions when externaltools we distribute try to startup
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
int framesSkipped;
|
int framesSkipped;
|
||||||
public bool skipNextFrame;
|
public bool skipNextFrame;
|
||||||
|
|
||||||
//if the emulator is paused then we dont need to behave as if unthrottled
|
//if the emulator is paused then we don't need to behave as if unthrottled
|
||||||
public bool signal_paused;
|
public bool signal_paused;
|
||||||
public bool signal_frameAdvance;
|
public bool signal_frameAdvance;
|
||||||
public bool signal_unthrottle;
|
public bool signal_unthrottle;
|
||||||
|
@ -30,7 +30,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
bool extraThrottle = false;
|
bool extraThrottle = false;
|
||||||
|
|
||||||
//if we're paused, none of this should happen. just clean out our state and dont skip
|
//if we're paused, none of this should happen. just clean out our state and don't skip
|
||||||
//notably, if we're frame-advancing, we should be paused.
|
//notably, if we're frame-advancing, we should be paused.
|
||||||
if (signal_paused && !signal_continuousFrameAdvancing)
|
if (signal_paused && !signal_continuousFrameAdvancing)
|
||||||
{
|
{
|
||||||
|
@ -78,7 +78,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
if (signal_continuousFrameAdvancing)
|
if (signal_continuousFrameAdvancing)
|
||||||
{
|
{
|
||||||
//dont ever skip frames when continuous frame advancing. it's meant for precision work.
|
//don't ever skip frames when continuous frame advancing. it's meant for precision work.
|
||||||
//but we DO need to throttle
|
//but we DO need to throttle
|
||||||
if (Global.Config.ClockThrottle)
|
if (Global.Config.ClockThrottle)
|
||||||
extraThrottle = true;
|
extraThrottle = true;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
// todo - display details on the current resolution status
|
// todo - display details on the current resolution status
|
||||||
// todo - check(mark) the one thats selected
|
// todo - check(mark) the one that's selected
|
||||||
// todo - turn top info into textboxes i guess, labels suck
|
// todo - turn top info into textboxes i guess, labels suck
|
||||||
namespace BizHawk.Client.EmuHawk
|
namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,7 +8,7 @@ using BizHawk.Client.Common;
|
||||||
using BizHawk.Client.EmuHawk.ToolExtensions;
|
using BizHawk.Client.EmuHawk.ToolExtensions;
|
||||||
|
|
||||||
//TODO - select which memorydomains go out to the CDL file. will this cause a problem when re-importing it?
|
//TODO - select which memorydomains go out to the CDL file. will this cause a problem when re-importing it?
|
||||||
//perhaps missing domains shouldnt fail a check
|
//perhaps missing domains shouldn't fail a check
|
||||||
//OR - just add a contextmenu option to the listview item that selects it for export.
|
//OR - just add a contextmenu option to the listview item that selects it for export.
|
||||||
//TODO - add a contextmenu option which warps to the hexeditor with the provided domain selected for visualizing on the hex editor.
|
//TODO - add a contextmenu option which warps to the hexeditor with the provided domain selected for visualizing on the hex editor.
|
||||||
//TODO - consider setting colors for columns in CDL
|
//TODO - consider setting colors for columns in CDL
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
public IEnumerable<LuaFile> RunningScripts => ScriptList.Where(lf => lf.Enabled);
|
public IEnumerable<LuaFile> RunningScripts => ScriptList.Where(lf => lf.Enabled);
|
||||||
public readonly LuaFileList ScriptList = new LuaFileList();
|
public readonly LuaFileList ScriptList = new LuaFileList();
|
||||||
|
|
||||||
public bool IsRebootingCore { get; set; } // pretty hacky.. we dont want a lua script to be able to restart itself by rebooting the core
|
public bool IsRebootingCore { get; set; } // pretty hacky.. we don't want a lua script to be able to restart itself by rebooting the core
|
||||||
public EventWaitHandle LuaWait { get; protected set; }
|
public EventWaitHandle LuaWait { get; protected set; }
|
||||||
|
|
||||||
public abstract void CallExitEvent(LuaFile lf);
|
public abstract void CallExitEvent(LuaFile lf);
|
||||||
|
|
|
@ -218,7 +218,7 @@ namespace BizHawk.Common
|
||||||
if (_extractor == null)
|
if (_extractor == null)
|
||||||
{
|
{
|
||||||
_rootStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
|
_rootStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||||
// we could autobind here, but i dont want to
|
// we could autobind here, but i don't want to
|
||||||
// bind it later with the desired extensions.
|
// bind it later with the desired extensions.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace BizHawk.Emulation.Cores.Components.M6502
|
||||||
{
|
{
|
||||||
public partial class MOS6502X<TLink>
|
public partial class MOS6502X<TLink>
|
||||||
{
|
{
|
||||||
//dont know whether this system is any faster. hard to get benchmarks someone else try it?
|
//don't know whether this system is any faster. hard to get benchmarks someone else try it?
|
||||||
//static ShortBuffer CompiledMicrocode;
|
//static ShortBuffer CompiledMicrocode;
|
||||||
//static ShortBuffer MicrocodeIndex;
|
//static ShortBuffer MicrocodeIndex;
|
||||||
static MOS6502X()
|
static MOS6502X()
|
||||||
|
@ -308,7 +308,7 @@ namespace BizHawk.Emulation.Cores.Components.M6502
|
||||||
/*VOP_RelativeStuff*/ new Uop[] { Uop.RelBranch_Stage3, Uop.End_BranchSpecial },
|
/*VOP_RelativeStuff*/ new Uop[] { Uop.RelBranch_Stage3, Uop.End_BranchSpecial },
|
||||||
/*VOP_RelativeStuff2*/ new Uop[] { Uop.RelBranch_Stage4, Uop.End },
|
/*VOP_RelativeStuff2*/ new Uop[] { Uop.RelBranch_Stage4, Uop.End },
|
||||||
/*VOP_RelativeStuff2*/ new Uop[] { Uop.End_SuppressInterrupt },
|
/*VOP_RelativeStuff2*/ new Uop[] { Uop.End_SuppressInterrupt },
|
||||||
//i assume these are dummy fetches.... maybe theyre just nops? supposedly these take 7 cycles so thats the only way i can make sense of it
|
//i assume these are dummy fetches.... maybe theyre just nops? supposedly these take 7 cycles so that's the only way i can make sense of it
|
||||||
//one of them might be the next instruction's fetch, and whatever fetch follows it.
|
//one of them might be the next instruction's fetch, and whatever fetch follows it.
|
||||||
//the interrupt would then take place if necessary, using a cached PC. but im not so sure about that.
|
//the interrupt would then take place if necessary, using a cached PC. but im not so sure about that.
|
||||||
/*VOP_NMI*/ new Uop[] { Uop.FetchDummy, Uop.FetchDummy, Uop.PushPCH, Uop.PushPCL, Uop.PushP_NMI, Uop.FetchPCLVector, Uop.FetchPCHVector, Uop.End_SuppressInterrupt },
|
/*VOP_NMI*/ new Uop[] { Uop.FetchDummy, Uop.FetchDummy, Uop.PushPCH, Uop.PushPCL, Uop.PushP_NMI, Uop.FetchPCLVector, Uop.FetchPCHVector, Uop.End_SuppressInterrupt },
|
||||||
|
@ -472,7 +472,7 @@ namespace BizHawk.Emulation.Cores.Components.M6502
|
||||||
|
|
||||||
void InitOpcodeHandlers()
|
void InitOpcodeHandlers()
|
||||||
{
|
{
|
||||||
//delegates arent faster than the switch. pretty sure. dont use it.
|
//delegates arent faster than the switch. pretty sure. don't use it.
|
||||||
//opcodeHandlers = new Action[] {
|
//opcodeHandlers = new Action[] {
|
||||||
// Unsupported,Fetch1, Fetch1_Real, Fetch2, Fetch3,FetchDummy,
|
// Unsupported,Fetch1, Fetch1_Real, Fetch2, Fetch3,FetchDummy,
|
||||||
// NOP,JSR,IncPC,
|
// NOP,JSR,IncPC,
|
||||||
|
@ -2276,7 +2276,7 @@ namespace BizHawk.Emulation.Cores.Components.M6502
|
||||||
rdy_freeze = !RDY;
|
rdy_freeze = !RDY;
|
||||||
if (RDY)
|
if (RDY)
|
||||||
{
|
{
|
||||||
//bleh.. redundant code to make sure we dont clobber alu_temp before using it to decide whether to change ea
|
//bleh.. redundant code to make sure we don't clobber alu_temp before using it to decide whether to change ea
|
||||||
|
|
||||||
if (alu_temp.Bit(8))
|
if (alu_temp.Bit(8))
|
||||||
{
|
{
|
||||||
|
@ -2710,7 +2710,7 @@ namespace BizHawk.Emulation.Cores.Components.M6502
|
||||||
|
|
||||||
void ExecuteOneRetry()
|
void ExecuteOneRetry()
|
||||||
{
|
{
|
||||||
//dont know whether this system is any faster. hard to get benchmarks someone else try it?
|
//don't know whether this system is any faster. hard to get benchmarks someone else try it?
|
||||||
//Uop uop = (Uop)CompiledMicrocode[MicrocodeIndex[opcode] + mi];
|
//Uop uop = (Uop)CompiledMicrocode[MicrocodeIndex[opcode] + mi];
|
||||||
Uop uop = Microcode[opcode][mi];
|
Uop uop = Microcode[opcode][mi];
|
||||||
switch (uop)
|
switch (uop)
|
||||||
|
|
|
@ -710,7 +710,7 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
|
||||||
// is this a pause block?
|
// is this a pause block?
|
||||||
if (block.BlockDescription == BlockType.PAUS || block.BlockDescription == BlockType.PAUSE_BLOCK)
|
if (block.BlockDescription == BlockType.PAUS || block.BlockDescription == BlockType.PAUSE_BLOCK)
|
||||||
{
|
{
|
||||||
// dont autostop the tape here
|
// don't autostop the tape here
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -720,11 +720,11 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
|
||||||
// timeout in t-states (equiv. to blockpause)
|
// timeout in t-states (equiv. to blockpause)
|
||||||
int timeout = ((_machine.GateArray.FrameLength * 50) / 1000) * blockPause;
|
int timeout = ((_machine.GateArray.FrameLength * 50) / 1000) * blockPause;
|
||||||
|
|
||||||
// dont use autostop detection if block has no pause at the end
|
// don't use autostop detection if block has no pause at the end
|
||||||
if (timeout == 0)
|
if (timeout == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// dont autostop if there is only 1 block
|
// don't autostop if there is only 1 block
|
||||||
if (DataBlocks.Count == 1 || _dataBlocks[_currentDataBlockIndex].BlockDescription == BlockType.CSW_Recording ||
|
if (DataBlocks.Count == 1 || _dataBlocks[_currentDataBlockIndex].BlockDescription == BlockType.CSW_Recording ||
|
||||||
_dataBlocks[_currentDataBlockIndex].BlockDescription == BlockType.WAV_Recording
|
_dataBlocks[_currentDataBlockIndex].BlockDescription == BlockType.WAV_Recording
|
||||||
)
|
)
|
||||||
|
|
|
@ -438,7 +438,7 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
|
||||||
Status1 = sector.Status1;
|
Status1 = sector.Status1;
|
||||||
Status2 = sector.Status2;
|
Status2 = sector.Status2;
|
||||||
|
|
||||||
// we dont need EN
|
// we don't need EN
|
||||||
UnSetBit(SR1_EN, ref Status1);
|
UnSetBit(SR1_EN, ref Status1);
|
||||||
|
|
||||||
// If SK=1, the FDC skips the sector with the Deleted Data Address Mark and reads the next sector.
|
// If SK=1, the FDC skips the sector with the Deleted Data Address Mark and reads the next sector.
|
||||||
|
|
|
@ -350,7 +350,7 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Only available on machines with a 64KB memory expansion
|
/// Only available on machines with a 64KB memory expansion
|
||||||
/// Default assume we dont have this
|
/// Default assume we don't have this
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual void SetRAM(BitArray bi)
|
public virtual void SetRAM(BitArray bi)
|
||||||
{
|
{
|
||||||
|
|
|
@ -346,7 +346,7 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
|
||||||
//
|
//
|
||||||
// This scheme looks a little similar to Alkatraz with incorrect sector ID info in many places
|
// This scheme looks a little similar to Alkatraz with incorrect sector ID info in many places
|
||||||
// and deleted address marks (although these do not seem to show the strict relience on removing the CM mark from ST2 result that Alkatraz does)
|
// and deleted address marks (although these do not seem to show the strict relience on removing the CM mark from ST2 result that Alkatraz does)
|
||||||
// There are also data CRC errors but these dont look to be read more than once/checked for changes during load
|
// There are also data CRC errors but these don't look to be read more than once/checked for changes during load
|
||||||
// Main identifiers:
|
// Main identifiers:
|
||||||
//
|
//
|
||||||
// * There are more than 10 cylinders
|
// * There are more than 10 cylinders
|
||||||
|
|
|
@ -1733,7 +1733,7 @@ namespace BizHawk.Emulation.Cores.Computers.AmstradCPC
|
||||||
|
|
||||||
int blockSize = blockdata.Length;
|
int blockSize = blockdata.Length;
|
||||||
|
|
||||||
// dont get description info for Pure Data Blocks
|
// don't get description info for Pure Data Blocks
|
||||||
if (dataBlockType != DataBlockType.Pure)
|
if (dataBlockType != DataBlockType.Pure)
|
||||||
{
|
{
|
||||||
if (blockdata[0] == 0x00 && blockSize == 19)
|
if (blockdata[0] == 0x00 && blockSize == 19)
|
||||||
|
|
|
@ -876,7 +876,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
||||||
// is this a pause block?
|
// is this a pause block?
|
||||||
if (block.BlockDescription == BlockType.PAUS || block.BlockDescription == BlockType.PAUSE_BLOCK)
|
if (block.BlockDescription == BlockType.PAUS || block.BlockDescription == BlockType.PAUSE_BLOCK)
|
||||||
{
|
{
|
||||||
// dont autostop the tape here
|
// don't autostop the tape here
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -886,11 +886,11 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
||||||
// timeout in t-states (equiv. to blockpause)
|
// timeout in t-states (equiv. to blockpause)
|
||||||
int timeout = ((_machine.ULADevice.FrameLength * 50) / 1000) * blockPause;
|
int timeout = ((_machine.ULADevice.FrameLength * 50) / 1000) * blockPause;
|
||||||
|
|
||||||
// dont use autostop detection if block has no pause at the end
|
// don't use autostop detection if block has no pause at the end
|
||||||
if (timeout == 0)
|
if (timeout == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// dont autostop if there is only 1 block
|
// don't autostop if there is only 1 block
|
||||||
if (DataBlocks.Count == 1 || _dataBlocks[_currentDataBlockIndex].BlockDescription == BlockType.CSW_Recording ||
|
if (DataBlocks.Count == 1 || _dataBlocks[_currentDataBlockIndex].BlockDescription == BlockType.CSW_Recording ||
|
||||||
_dataBlocks[_currentDataBlockIndex].BlockDescription == BlockType.WAV_Recording
|
_dataBlocks[_currentDataBlockIndex].BlockDescription == BlockType.WAV_Recording
|
||||||
)
|
)
|
||||||
|
|
|
@ -447,7 +447,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
||||||
Status1 = sector.Status1;
|
Status1 = sector.Status1;
|
||||||
Status2 = sector.Status2;
|
Status2 = sector.Status2;
|
||||||
|
|
||||||
// we dont need EN
|
// we don't need EN
|
||||||
UnSetBit(SR1_EN, ref Status1);
|
UnSetBit(SR1_EN, ref Status1);
|
||||||
|
|
||||||
// If SK=1, the FDC skips the sector with the Deleted Data Address Mark and reads the next sector.
|
// If SK=1, the FDC skips the sector with the Deleted Data Address Mark and reads the next sector.
|
||||||
|
@ -754,7 +754,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
||||||
Status1 = sector.Status1;
|
Status1 = sector.Status1;
|
||||||
Status2 = sector.Status2;
|
Status2 = sector.Status2;
|
||||||
|
|
||||||
// we dont need EN
|
// we don't need EN
|
||||||
UnSetBit(SR1_EN, ref Status1);
|
UnSetBit(SR1_EN, ref Status1);
|
||||||
|
|
||||||
// invert CM for read deleted data command
|
// invert CM for read deleted data command
|
||||||
|
|
|
@ -346,7 +346,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
||||||
//
|
//
|
||||||
// This scheme looks a little similar to Alkatraz with incorrect sector ID info in many places
|
// This scheme looks a little similar to Alkatraz with incorrect sector ID info in many places
|
||||||
// and deleted address marks (although these do not seem to show the strict relience on removing the CM mark from ST2 result that Alkatraz does)
|
// and deleted address marks (although these do not seem to show the strict relience on removing the CM mark from ST2 result that Alkatraz does)
|
||||||
// There are also data CRC errors but these dont look to be read more than once/checked for changes during load
|
// There are also data CRC errors but these don't look to be read more than once/checked for changes during load
|
||||||
// Main identifiers:
|
// Main identifiers:
|
||||||
//
|
//
|
||||||
// * There are more than 10 cylinders
|
// * There are more than 10 cylinders
|
||||||
|
|
|
@ -1629,7 +1629,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
|
||||||
|
|
||||||
int blockSize = blockdata.Length;
|
int blockSize = blockdata.Length;
|
||||||
|
|
||||||
// dont get description info for Pure Data Blocks
|
// don't get description info for Pure Data Blocks
|
||||||
if (dataBlockType != DataBlockType.Pure)
|
if (dataBlockType != DataBlockType.Pure)
|
||||||
{
|
{
|
||||||
if (blockdata[0] == 0x00 && blockSize == 19)
|
if (blockdata[0] == 0x00 && blockSize == 19)
|
||||||
|
|
|
@ -1430,7 +1430,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
||||||
s_pixel = (byte)(sprite_data[0] + sprite_data[1]);
|
s_pixel = (byte)(sprite_data[0] + sprite_data[1]);
|
||||||
sprite_attr = (byte)SL_sprites_ordered[j * 4 + 3];
|
sprite_attr = (byte)SL_sprites_ordered[j * 4 + 3];
|
||||||
|
|
||||||
// pixel color of 0 is transparent, so if this is the case we dont have a pixel
|
// pixel color of 0 is transparent, so if this is the case we don't have a pixel
|
||||||
if (s_pixel != 0)
|
if (s_pixel != 0)
|
||||||
{
|
{
|
||||||
have_pixel = true;
|
have_pixel = true;
|
||||||
|
|
|
@ -1375,7 +1375,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
||||||
s_pixel = (byte)(sprite_data[0] + sprite_data[1]);
|
s_pixel = (byte)(sprite_data[0] + sprite_data[1]);
|
||||||
sprite_attr = (byte)SL_sprites_ordered[j * 4 + 3];
|
sprite_attr = (byte)SL_sprites_ordered[j * 4 + 3];
|
||||||
|
|
||||||
// pixel color of 0 is transparent, so if this is the case we dont have a pixel
|
// pixel color of 0 is transparent, so if this is the case we don't have a pixel
|
||||||
if (s_pixel != 0)
|
if (s_pixel != 0)
|
||||||
{
|
{
|
||||||
have_pixel = true;
|
have_pixel = true;
|
||||||
|
|
|
@ -135,7 +135,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
||||||
}
|
}
|
||||||
|
|
||||||
// turn off the screen so the image doesnt persist
|
// turn off the screen so the image doesnt persist
|
||||||
// but dont turn off blank_frame yet, it still needs to be true until the next VBL
|
// but don't turn off blank_frame yet, it still needs to be true until the next VBL
|
||||||
// this doesn't run for GBC, some games, ex MIB the series 2, rely on the screens persistence while off to make video look smooth.
|
// this doesn't run for GBC, some games, ex MIB the series 2, rely on the screens persistence while off to make video look smooth.
|
||||||
// But some GB gams, ex Battletoads, turn off the screen for a long time from the middle of the frame, so need to be cleared.
|
// But some GB gams, ex Battletoads, turn off the screen for a long time from the middle of the frame, so need to be cleared.
|
||||||
if (ppu.clear_screen)
|
if (ppu.clear_screen)
|
||||||
|
|
|
@ -1085,7 +1085,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
||||||
s_pixel = (byte)(sprite_data[0] + sprite_data[1]);
|
s_pixel = (byte)(sprite_data[0] + sprite_data[1]);
|
||||||
sprite_attr = (byte)SL_sprites_ordered[j * 4 + 3];
|
sprite_attr = (byte)SL_sprites_ordered[j * 4 + 3];
|
||||||
|
|
||||||
// pixel color of 0 is transparent, so if this is the case we dont have a pixel
|
// pixel color of 0 is transparent, so if this is the case we don't have a pixel
|
||||||
if (s_pixel != 0)
|
if (s_pixel != 0)
|
||||||
{
|
{
|
||||||
have_pixel = true;
|
have_pixel = true;
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64
|
||||||
{
|
{
|
||||||
int size = api.get_memory_size(id);
|
int size = api.get_memory_size(id);
|
||||||
|
|
||||||
//if this type of memory isnt available, dont make the memory domain
|
//if this type of memory isnt available, don't make the memory domain
|
||||||
if (size == 0)
|
if (size == 0)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
// It is a Work in Progress
|
// It is a Work in Progress
|
||||||
// Save Ram is broken and the game will not load with save ram written through this mapper
|
// Save Ram is broken and the game will not load with save ram written through this mapper
|
||||||
// This is also true on punes
|
// This is also true on punes
|
||||||
// The game also requires 1 screen mirroring modes that other 195 games dont
|
// The game also requires 1 screen mirroring modes that other 195 games don't
|
||||||
// Although the game runs correctly with 195 CHR mapping, other aspects do not work
|
// Although the game runs correctly with 195 CHR mapping, other aspects do not work
|
||||||
// More research is needed
|
// More research is needed
|
||||||
|
|
||||||
|
|
|
@ -306,7 +306,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
NES.WriteMemory(0x4016, 1);
|
NES.WriteMemory(0x4016, 1);
|
||||||
NES.WriteMemory(0x4016, 0);
|
NES.WriteMemory(0x4016, 0);
|
||||||
|
|
||||||
//read pad and create rising edge button signals so we dont trigger events as quickly as we hold the button down
|
//read pad and create rising edge button signals so we don't trigger events as quickly as we hold the button down
|
||||||
int currButtons = 0;
|
int currButtons = 0;
|
||||||
for (int i = 0; i < 8; i++)
|
for (int i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -95,7 +95,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// dont write to VROM
|
// don't write to VROM
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -42,7 +42,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
//but (for chrram): "Use of $00 with no CHR ROM implies that the game is wired to map nametable memory in CHR space. The value $00 MUST NOT be used if a mapper isn't defined to allow this. "
|
//but (for chrram): "Use of $00 with no CHR ROM implies that the game is wired to map nametable memory in CHR space. The value $00 MUST NOT be used if a mapper isn't defined to allow this. "
|
||||||
//well, i'm not going to do that now. we'll save it for when it's needed
|
//well, i'm not going to do that now. we'll save it for when it's needed
|
||||||
//"it's only mapper 218 and no other mappers"
|
//"it's only mapper 218 and no other mappers"
|
||||||
//so, dont assume this
|
//so, don't assume this
|
||||||
//Cart.vram_size = 8;
|
//Cart.vram_size = 8;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -342,7 +342,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
//this will be used to track classes that implement boards
|
//this will be used to track classes that implement boards
|
||||||
[AttributeUsage(AttributeTargets.Class)]
|
[AttributeUsage(AttributeTargets.Class)]
|
||||||
public sealed class INESBoardImplAttribute : Attribute { }
|
public sealed class INESBoardImplAttribute : Attribute { }
|
||||||
//this tracks derived boards that shouldnt be used by the implementation scanner
|
//this tracks derived boards that shouldn't be used by the implementation scanner
|
||||||
[AttributeUsage(AttributeTargets.Class)]
|
[AttributeUsage(AttributeTargets.Class)]
|
||||||
public sealed class INESBoardImplCancelAttribute : Attribute { }
|
public sealed class INESBoardImplCancelAttribute : Attribute { }
|
||||||
static List<Type> INESBoardImplementors = new List<Type>();
|
static List<Type> INESBoardImplementors = new List<Type>();
|
||||||
|
|
|
@ -723,7 +723,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
break;
|
break;
|
||||||
case 0x4014:
|
case 0x4014:
|
||||||
//schedule a sprite dma event for beginning 1 cycle in the future.
|
//schedule a sprite dma event for beginning 1 cycle in the future.
|
||||||
//this receives 2 because thats just the way it works out.
|
//this receives 2 because that's just the way it works out.
|
||||||
oam_dma_addr = (ushort)(val << 8);
|
oam_dma_addr = (ushort)(val << 8);
|
||||||
sprdma_countdown = 1;
|
sprdma_countdown = 1;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -507,7 +507,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
{
|
{
|
||||||
origin = EDetectionOrigin.GameDB;
|
origin = EDetectionOrigin.GameDB;
|
||||||
LoadWriteLine("Chose board from bizhawk gamedb: " + choice.board_type);
|
LoadWriteLine("Chose board from bizhawk gamedb: " + choice.board_type);
|
||||||
//gamedb entries that dont specify prg/chr sizes can infer it from the ines header
|
//gamedb entries that don't specify prg/chr sizes can infer it from the ines header
|
||||||
if (iNesHeaderInfo != null)
|
if (iNesHeaderInfo != null)
|
||||||
{
|
{
|
||||||
if (choice.prg_size == -1) choice.prg_size = iNesHeaderInfo.prg_size;
|
if (choice.prg_size == -1) choice.prg_size = iNesHeaderInfo.prg_size;
|
||||||
|
|
|
@ -368,8 +368,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
|
|
||||||
//nes.LogLine("addr wrote vt = {0}, ht = {1}", ppur._vt, ppur._ht);
|
//nes.LogLine("addr wrote vt = {0}, ht = {1}", ppur._vt, ppur._ht);
|
||||||
//normally the address isnt observed by the board till it gets clocked by a read or write.
|
//normally the address isnt observed by the board till it gets clocked by a read or write.
|
||||||
//but maybe thats just because a ppu read/write shoves it on the address bus
|
//but maybe that's just because a ppu read/write shoves it on the address bus
|
||||||
//apparently this shoves it on the address bus, too, or else blargg's mmc3 tests dont pass
|
//apparently this shoves it on the address bus, too, or else blargg's mmc3 tests don't pass
|
||||||
//ONLY if the ppu is not rendering
|
//ONLY if the ppu is not rendering
|
||||||
if (ppur.status.sl >= 241 || !PPUON)
|
if (ppur.status.sl >= 241 || !PPUON)
|
||||||
nes.Board.AddressPPU(ppur.get_2007access());
|
nes.Board.AddressPPU(ppur.get_2007access());
|
||||||
|
|
|
@ -434,7 +434,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
int spixel = sl_sprites[256 + xt * 8 + xp];
|
int spixel = sl_sprites[256 + xt * 8 + xp];
|
||||||
int temp_attr = sl_sprites[512 + xt * 8 + xp];
|
int temp_attr = sl_sprites[512 + xt * 8 + xp];
|
||||||
|
|
||||||
//TODO - make sure we dont trigger spritehit if the edges are masked for either BG or OBJ
|
//TODO - make sure we don't trigger spritehit if the edges are masked for either BG or OBJ
|
||||||
//spritehit:
|
//spritehit:
|
||||||
//1. is it sprite#0?
|
//1. is it sprite#0?
|
||||||
//2. is the bg pixel nonzero?
|
//2. is the bg pixel nonzero?
|
||||||
|
|
|
@ -118,7 +118,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Locks a buffer and sets it into libretro. You must pass a delegate to be executed while that buffer is locked.
|
/// Locks a buffer and sets it into libretro. You must pass a delegate to be executed while that buffer is locked.
|
||||||
/// This is meant to be used for avoiding a memcpy for large roms (which the core is then just going to memcpy again on its own)
|
/// This is meant to be used for avoiding a memcpy for large roms (which the core is then just going to memcpy again on its own)
|
||||||
/// The memcpy has to happen at some point (libretro semantics specify [not literally, the docs dont say] that the core should finish using the buffer before its init returns)
|
/// The memcpy has to happen at some point (libretro semantics specify [not literally, the docs don't say] that the core should finish using the buffer before its init returns)
|
||||||
/// but this limits it to once.
|
/// but this limits it to once.
|
||||||
/// Moreover, this keeps the c++ side from having to free strings when they're no longer used (and memory management is trickier there, so we try to avoid it)
|
/// Moreover, this keeps the c++ side from having to free strings when they're no longer used (and memory management is trickier there, so we try to avoid it)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -61,7 +61,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
||||||
{
|
{
|
||||||
using (_exe.EnterExit())
|
using (_exe.EnterExit())
|
||||||
{
|
{
|
||||||
//why don't we need this for the other loads? I dont know, our XML handling is really confusing
|
//why don't we need this for the other loads? I don't know, our XML handling is really confusing
|
||||||
string xml = rom_xml == null ? null : System.Text.Encoding.ASCII.GetString(rom_xml);
|
string xml = rom_xml == null ? null : System.Text.Encoding.ASCII.GetString(rom_xml);
|
||||||
|
|
||||||
SetAscii(0, xml ?? "", () =>
|
SetAscii(0, xml ?? "", () =>
|
||||||
|
|
|
@ -481,7 +481,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES
|
||||||
|
|
||||||
lineDouble = true;
|
lineDouble = true;
|
||||||
|
|
||||||
// we dont dot double here because the user wanted double res and the game provided double res
|
// we don't dot double here because the user wanted double res and the game provided double res
|
||||||
dotDouble = false;
|
dotDouble = false;
|
||||||
}
|
}
|
||||||
else if (lineDouble)
|
else if (lineDouble)
|
||||||
|
|
|
@ -109,7 +109,7 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
||||||
if (AdpcmIsPlaying == false && (value & 0x20) != 0)
|
if (AdpcmIsPlaying == false && (value & 0x20) != 0)
|
||||||
{
|
{
|
||||||
if ((value & 0x40) == 0)
|
if ((value & 0x40) == 0)
|
||||||
Console.WriteLine("a thing thats normally set is not set");
|
Console.WriteLine("a thing that's normally set is not set");
|
||||||
|
|
||||||
AdpcmIsPlaying = true;
|
AdpcmIsPlaying = true;
|
||||||
playingSample = 2048;
|
playingSample = 2048;
|
||||||
|
|
|
@ -31,7 +31,7 @@ General:
|
||||||
much more frequently than was done on Hucards, and our framebuffer/active display strategy starts to look more silly.
|
much more frequently than was done on Hucards, and our framebuffer/active display strategy starts to look more silly.
|
||||||
Oh well, though. Changing this is a Native Version Core feature, not a C# Core feature.
|
Oh well, though. Changing this is a Native Version Core feature, not a C# Core feature.
|
||||||
|
|
||||||
Eagan's Rendered Sprite Demo - demonstrates sprites that shouldnt be displayed (so does Turbo Engine!)
|
Eagan's Rendered Sprite Demo - demonstrates sprites that shouldn't be displayed (so does Turbo Engine!)
|
||||||
|
|
||||||
===================================
|
===================================
|
||||||
Games that need TV Emulation (to varying degrees)
|
Games that need TV Emulation (to varying degrees)
|
||||||
|
|
|
@ -190,7 +190,7 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
||||||
pce.IntDataTransferReady = true;
|
pce.IntDataTransferReady = true;
|
||||||
|
|
||||||
// If more sectors, should set the next think-clock to however long it takes to read 1 sector
|
// If more sectors, should set the next think-clock to however long it takes to read 1 sector
|
||||||
// but I dont. I dont think transfers actually happen sector by sector
|
// but I don't. I don't think transfers actually happen sector by sector
|
||||||
// like this, they probably become available as the bits come off the disc.
|
// like this, they probably become available as the bits come off the disc.
|
||||||
// but lets get some basic functionality before we go crazy.
|
// but lets get some basic functionality before we go crazy.
|
||||||
// Idunno, maybe they do come in a sector at a time.
|
// Idunno, maybe they do come in a sector at a time.
|
||||||
|
|
|
@ -193,7 +193,7 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
||||||
{
|
{
|
||||||
case 0: // return status byte;
|
case 0: // return status byte;
|
||||||
retval = StatusByte;
|
retval = StatusByte;
|
||||||
StatusByte = 0; // maybe bit 6 should be preserved. but we dont currently emulate it.
|
StatusByte = 0; // maybe bit 6 should be preserved. but we don't currently emulate it.
|
||||||
cpu.IRQ1Assert = false;
|
cpu.IRQ1Assert = false;
|
||||||
return retval;
|
return retval;
|
||||||
case 1: // unused
|
case 1: // unused
|
||||||
|
@ -216,8 +216,8 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
||||||
|
|
||||||
internal void RunDmaForScanline()
|
internal void RunDmaForScanline()
|
||||||
{
|
{
|
||||||
// TODO: dont do this all in one scanline. I guess it can do about 227 words per scanline.
|
// TODO: don't do this all in one scanline. I guess it can do about 227 words per scanline.
|
||||||
// TODO: to be honest, dont do it in a block per scanline. put it in the CPU think function.
|
// TODO: to be honest, don't do it in a block per scanline. put it in the CPU think function.
|
||||||
//Console.WriteLine("******************************* Doing some dma ******************************");
|
//Console.WriteLine("******************************* Doing some dma ******************************");
|
||||||
int advanceSource = (Registers[DCR] & 4) == 0 ? +1 : -1;
|
int advanceSource = (Registers[DCR] & 4) == 0 ? +1 : -1;
|
||||||
int advanceDest = (Registers[DCR] & 8) == 0 ? +1 : -1;
|
int advanceDest = (Registers[DCR] & 8) == 0 ? +1 : -1;
|
||||||
|
|
|
@ -8,7 +8,7 @@ using BizHawk.Emulation.Cores.Components.Z80A;
|
||||||
TODO:
|
TODO:
|
||||||
+ HCounter (Manually set for light phaser emulation... should be only case it's polled)
|
+ HCounter (Manually set for light phaser emulation... should be only case it's polled)
|
||||||
+ Try to clean up the organization of the source code.
|
+ Try to clean up the organization of the source code.
|
||||||
+ Mode 1 not implemented in VDP TMS modes. (I dont have a test case in SG1000 or Coleco)
|
+ Mode 1 not implemented in VDP TMS modes. (I don't have a test case in SG1000 or Coleco)
|
||||||
|
|
||||||
**********************************************************/
|
**********************************************************/
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
//TODO Disc.Structure.Sessions[0].length_aba was 0
|
//TODO Disc.Structure.Sessions[0].length_aba was 0
|
||||||
//TODO mednafen 0.9.37 changed some disc region detection heuristics. analyze and apply in c# side. also the SCEX id handling changed, maybe simplified
|
//TODO mednafen 0.9.37 changed some disc region detection heuristics. analyze and apply in c# side. also the SCEX id handling changed, maybe simplified
|
||||||
|
|
||||||
//TODO - ok, think about this. we MUST load a state with the CDC completely intact. no quickly changing discs. thats madness.
|
//TODO - ok, think about this. we MUST load a state with the CDC completely intact. no quickly changing discs. that's madness.
|
||||||
//well, I could savestate the disc index and validate the disc collection when loading a state.
|
//well, I could savestate the disc index and validate the disc collection when loading a state.
|
||||||
//the big problem is, it's completely at odds with the slider-based disc changing model.
|
//the big problem is, it's completely at odds with the slider-based disc changing model.
|
||||||
//but, maybe it can be reconciled with that model by using the disc ejection to our advantage.
|
//but, maybe it can be reconciled with that model by using the disc ejection to our advantage.
|
||||||
|
@ -116,7 +116,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
|
||||||
SystemVidStandard = OctoshockDll.eVidStandard.NTSC;
|
SystemVidStandard = OctoshockDll.eVidStandard.NTSC;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO - known bad firmwares are a no-go. we should refuse to boot them. (thats the mednafen policy)
|
//TODO - known bad firmwares are a no-go. we should refuse to boot them. (that's the mednafen policy)
|
||||||
byte[] firmware = comm.CoreFileProvider.GetFirmware("PSX", firmwareRegion, true, "A PSX `" + firmwareRegion + "` region bios file is required");
|
byte[] firmware = comm.CoreFileProvider.GetFirmware("PSX", firmwareRegion, true, "A PSX `" + firmwareRegion + "` region bios file is required");
|
||||||
|
|
||||||
//create the instance
|
//create the instance
|
||||||
|
@ -210,7 +210,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
|
||||||
if (fioCfg.Memcards[0]) OctoshockDll.shock_Peripheral_MemcardTransact(psx, 0x01, ref memcardTransaction);
|
if (fioCfg.Memcards[0]) OctoshockDll.shock_Peripheral_MemcardTransact(psx, 0x01, ref memcardTransaction);
|
||||||
if (fioCfg.Memcards[1]) OctoshockDll.shock_Peripheral_MemcardTransact(psx, 0x02, ref memcardTransaction);
|
if (fioCfg.Memcards[1]) OctoshockDll.shock_Peripheral_MemcardTransact(psx, 0x02, ref memcardTransaction);
|
||||||
|
|
||||||
//do this after framebuffers and peripherals and whatever crap are setup. kind of lame, but thats how it is for now
|
//do this after framebuffers and peripherals and whatever crap are setup. kind of lame, but that's how it is for now
|
||||||
StudySaveBufferSize();
|
StudySaveBufferSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,8 +380,8 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
|
||||||
int ShockDisc_ReadTOC(IntPtr opaque, OctoshockDll.ShockTOC* read_target, OctoshockDll.ShockTOCTrack* tracks101)
|
int ShockDisc_ReadTOC(IntPtr opaque, OctoshockDll.ShockTOC* read_target, OctoshockDll.ShockTOCTrack* tracks101)
|
||||||
{
|
{
|
||||||
read_target->disc_type = (byte)Disc.TOC.Session1Format;
|
read_target->disc_type = (byte)Disc.TOC.Session1Format;
|
||||||
read_target->first_track = (byte)Disc.TOC.FirstRecordedTrackNumber; //i _think_ thats what is meant here
|
read_target->first_track = (byte)Disc.TOC.FirstRecordedTrackNumber; //i _think_ that's what is meant here
|
||||||
read_target->last_track = (byte)Disc.TOC.LastRecordedTrackNumber; //i _think_ thats what is meant here
|
read_target->last_track = (byte)Disc.TOC.LastRecordedTrackNumber; //i _think_ that's what is meant here
|
||||||
|
|
||||||
tracks101[0].lba = tracks101[0].adr = tracks101[0].control = 0;
|
tracks101[0].lba = tracks101[0].adr = tracks101[0].control = 0;
|
||||||
|
|
||||||
|
@ -489,7 +489,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
|
||||||
for (int multiport = 0; multiport < 4; multiport++)
|
for (int multiport = 0; multiport < 4; multiport++)
|
||||||
{
|
{
|
||||||
//note: I would not say this port addressing scheme has been completely successful
|
//note: I would not say this port addressing scheme has been completely successful
|
||||||
//however, it may be because i was constantly constrained by having to adapt it to mednafen.. i dont know.
|
//however, it may be because i was constantly constrained by having to adapt it to mednafen.. i don't know.
|
||||||
|
|
||||||
int portNum = (port + 1) + ((multiport + 1) << 4);
|
int portNum = (port + 1) + ((multiport + 1) << 4);
|
||||||
int slot = port * 4 + multiport;
|
int slot = port * 4 + multiport;
|
||||||
|
@ -635,7 +635,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
|
||||||
|
|
||||||
if (standard == OctoshockDll.eVidStandard.NTSC)
|
if (standard == OctoshockDll.eVidStandard.NTSC)
|
||||||
{
|
{
|
||||||
//dont make this 430, it's already been turned into 400 from 368+30 and then some fudge factor
|
//don't make this 430, it's already been turned into 400 from 368+30 and then some fudge factor
|
||||||
VirtualWidth = 400;
|
VirtualWidth = 400;
|
||||||
VirtualHeight = (int)(scanline_num * 300.0f / 240);
|
VirtualHeight = (int)(scanline_num * 300.0f / 240);
|
||||||
if (settings.HorizontalClipping == eHorizontalClipping.Basic)
|
if (settings.HorizontalClipping == eHorizontalClipping.Basic)
|
||||||
|
@ -648,7 +648,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
|
||||||
if (settings.HorizontalClipping == eHorizontalClipping.Basic)
|
if (settings.HorizontalClipping == eHorizontalClipping.Basic)
|
||||||
VirtualWidth = 378;
|
VirtualWidth = 378;
|
||||||
//I'll be honest, I was just guessing here mostly
|
//I'll be honest, I was just guessing here mostly
|
||||||
//I need the AR to basically work out to be 363/288 (thats what it was in mednafen mode) so...
|
//I need the AR to basically work out to be 363/288 (that's what it was in mednafen mode) so...
|
||||||
VirtualHeight = (int)(scanline_num * (400.0f/363*288) / 288);
|
VirtualHeight = (int)(scanline_num * (400.0f/363*288) / 288);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -718,7 +718,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
|
||||||
|| Frame == 0
|
|| Frame == 0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//dont replace default disc with the leave-default placeholder!
|
//don't replace default disc with the leave-default placeholder!
|
||||||
if (requestedDisc == -1)
|
if (requestedDisc == -1)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -956,7 +956,7 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
|
||||||
|
|
||||||
#region ISoundProvider
|
#region ISoundProvider
|
||||||
|
|
||||||
//private short[] sbuff = new short[1454 * 2]; //this is the most ive ever seen.. dont know why. two frames worth i guess
|
//private short[] sbuff = new short[1454 * 2]; //this is the most ive ever seen.. don't know why. two frames worth i guess
|
||||||
private short[] sbuff = new short[1611 * 2]; //need this for pal
|
private short[] sbuff = new short[1611 * 2]; //need this for pal
|
||||||
private int sbuffcontains = 0;
|
private int sbuffcontains = 0;
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@ using System.IO;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
//HOW TO USE
|
//HOW TO USE
|
||||||
//we dont expect anyone to use this fully yet. It's just over-engineered for future use.
|
//we don't expect anyone to use this fully yet. It's just over-engineered for future use.
|
||||||
//for now, just use it when you truly dont know what to do with a file.
|
//for now, just use it when you truly don't know what to do with a file.
|
||||||
//This system depends heavily on the provided extension. We're not going to exhaustively try every format all the time. If someone loads a cue which is named .sfc, we cant cope with that.
|
//This system depends heavily on the provided extension. We're not going to exhaustively try every format all the time. If someone loads a cue which is named .sfc, we cant cope with that.
|
||||||
//However, common mistakes will be handled, on an as-needed basis.
|
//However, common mistakes will be handled, on an as-needed basis.
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ namespace BizHawk.Emulation.Cores
|
||||||
public enum FileIDType
|
public enum FileIDType
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
Multiple, //dont think this makes sense. shouldnt the multiple options be returned?
|
Multiple, //don't think this makes sense. shouldn't the multiple options be returned?
|
||||||
|
|
||||||
Disc, //an unknown disc
|
Disc, //an unknown disc
|
||||||
PSX, PSX_EXE, PSF,
|
PSX, PSX_EXE, PSF,
|
||||||
|
@ -573,7 +573,7 @@ namespace BizHawk.Emulation.Cores
|
||||||
}
|
}
|
||||||
|
|
||||||
//well... guess it's a disc.
|
//well... guess it's a disc.
|
||||||
//since it's just a bin, we dont need the user to provide a DiscSystem disc.
|
//since it's just a bin, we don't need the user to provide a DiscSystem disc.
|
||||||
//lets just analyze this as best we can.
|
//lets just analyze this as best we can.
|
||||||
//of course, it's a lot of redundant logic with the discsystem disc checker.
|
//of course, it's a lot of redundant logic with the discsystem disc checker.
|
||||||
//but you kind of need different approaches when loading a hugely unstructured bin file
|
//but you kind of need different approaches when loading a hugely unstructured bin file
|
||||||
|
|
|
@ -114,7 +114,7 @@ namespace BizHawk.Emulation.Cores.Libretro
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Locks a buffer and sets it into libretro. You must pass a delegate to be executed while that buffer is locked.
|
/// Locks a buffer and sets it into libretro. You must pass a delegate to be executed while that buffer is locked.
|
||||||
/// This is meant to be used for avoiding a memcpy for large roms (which the core is then just going to memcpy again on its own)
|
/// This is meant to be used for avoiding a memcpy for large roms (which the core is then just going to memcpy again on its own)
|
||||||
/// The memcpy has to happen at some point (libretro semantics specify [not literally, the docs dont say] that the core should finish using the buffer before its init returns)
|
/// The memcpy has to happen at some point (libretro semantics specify [not literally, the docs don't say] that the core should finish using the buffer before its init returns)
|
||||||
/// but this limits it to once.
|
/// but this limits it to once.
|
||||||
/// Moreover, this keeps the c++ side from having to free strings when they're no longer used (and memory management is trickier there, so we try to avoid it)
|
/// Moreover, this keeps the c++ side from having to free strings when they're no longer used (and memory management is trickier there, so we try to avoid it)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -196,7 +196,7 @@ namespace BizHawk.Emulation.Cores.Libretro
|
||||||
public fixed ulong buf_size[(int)BufId.BufId_Num]; //actually a size_t
|
public fixed ulong buf_size[(int)BufId.BufId_Num]; //actually a size_t
|
||||||
|
|
||||||
//utilities
|
//utilities
|
||||||
public bool GetBoolValue() => value != 0; // should this be here or by the other helpers? I dont know
|
public bool GetBoolValue() => value != 0; // should this be here or by the other helpers? I don't know
|
||||||
}
|
}
|
||||||
|
|
||||||
public retro_system_av_info AVInfo => comm->env.retro_system_av_info;
|
public retro_system_av_info AVInfo => comm->env.retro_system_av_info;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
//TODO: it's a bit of a misnomer to call this a 'core'
|
//TODO: it's a bit of a misnomer to call this a 'core'
|
||||||
//that's libretro nomenclature for a particular core (nes, genesis, doom, etc.)
|
//that's libretro nomenclature for a particular core (nes, genesis, doom, etc.)
|
||||||
//we should call this LibretroEmulator (yeah, it was originally called that)
|
//we should call this LibretroEmulator (yeah, it was originally called that)
|
||||||
//Since it's an IEmulator.. but... I dont know. Yeah, that's probably best
|
//Since it's an IEmulator.. but... I don't know. Yeah, that's probably best
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
@ -36,7 +36,7 @@ namespace BizHawk.Emulation.Cores.Libretro
|
||||||
//and I need retro_set_environment set so I can find out if the core supports no-game
|
//and I need retro_set_environment set so I can find out if the core supports no-game
|
||||||
//therefore, I need a complete environment (including pathing) before I can complete my introspection of the core.
|
//therefore, I need a complete environment (including pathing) before I can complete my introspection of the core.
|
||||||
//Sucky, but that's life.
|
//Sucky, but that's life.
|
||||||
//I dont even know for sure what paths I should use until... (what?)
|
//I don't even know for sure what paths I should use until... (what?)
|
||||||
|
|
||||||
|
|
||||||
//not sure about each of these.. but we may be doing things different than retroarch.
|
//not sure about each of these.. but we may be doing things different than retroarch.
|
||||||
|
@ -257,7 +257,7 @@ namespace BizHawk.Emulation.Cores.Libretro
|
||||||
})
|
})
|
||||||
definition.BoolButtons.Add(string.Format(item,"RetroPad"));
|
definition.BoolButtons.Add(string.Format(item,"RetroPad"));
|
||||||
|
|
||||||
definition.BoolButtons.Add("Pointer Pressed"); //TODO: this isnt showing up in the binding panel. I dont want to find out why.
|
definition.BoolButtons.Add("Pointer Pressed"); //TODO: this isnt showing up in the binding panel. I don't want to find out why.
|
||||||
definition.FloatControls.Add("Pointer X");
|
definition.FloatControls.Add("Pointer X");
|
||||||
definition.FloatControls.Add("Pointer Y");
|
definition.FloatControls.Add("Pointer Y");
|
||||||
definition.FloatRanges.Add(new ControllerDefinition.FloatRange(-32767, 0, 32767));
|
definition.FloatRanges.Add(new ControllerDefinition.FloatRange(-32767, 0, 32767));
|
||||||
|
@ -328,7 +328,7 @@ namespace BizHawk.Emulation.Cores.Libretro
|
||||||
[FeatureNotImplemented]
|
[FeatureNotImplemented]
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
//if we dont have saveram, it isnt modified. otherwise, assume it is
|
//if we don't have saveram, it isnt modified. otherwise, assume it is
|
||||||
var mem = api.QUERY_GetMemory(LibretroApi.RETRO_MEMORY.SAVE_RAM);
|
var mem = api.QUERY_GetMemory(LibretroApi.RETRO_MEMORY.SAVE_RAM);
|
||||||
|
|
||||||
//bail if the size is 0
|
//bail if the size is 0
|
||||||
|
|
|
@ -20,7 +20,7 @@ namespace BizHawk.Emulation.Cores.Components
|
||||||
// ======================================================================
|
// ======================================================================
|
||||||
|
|
||||||
// TODO: Finish testing Envelope generator
|
// TODO: Finish testing Envelope generator
|
||||||
// TODO: maybe add guards when changing envelope parameters to immediately change envelope state (ie dont wait for EG cycle?)
|
// TODO: maybe add guards when changing envelope parameters to immediately change envelope state (ie don't wait for EG cycle?)
|
||||||
// TODO: Detune
|
// TODO: Detune
|
||||||
// TODO: LFO
|
// TODO: LFO
|
||||||
// TODO: Switch from Perfect Operator to Accurate Operator.
|
// TODO: Switch from Perfect Operator to Accurate Operator.
|
||||||
|
|
|
@ -249,7 +249,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//we dont want to keep churning through this many big byte arrays while reading stuff, so we save a sector cache.
|
//we don't want to keep churning through this many big byte arrays while reading stuff, so we save a sector cache.
|
||||||
readonly byte[] Read_SectorBuf = new byte[2352];
|
readonly byte[] Read_SectorBuf = new byte[2352];
|
||||||
int Read_LastIndex = 0;
|
int Read_LastIndex = 0;
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// the CCD specifies this, but it isnt in the actual disc data as such, it is encoded some other (likely difficult to extract) way and thats why CCD puts it here
|
/// the CCD specifies this, but it isnt in the actual disc data as such, it is encoded some other (likely difficult to extract) way and that's why CCD puts it here
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int Session;
|
public int Session;
|
||||||
|
|
||||||
|
@ -413,7 +413,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
var track = disc.Session1.Tracks[tnum];
|
var track = disc.Session1.Tracks[tnum];
|
||||||
sw.WriteLine("[TRACK {0}]", track.Number);
|
sw.WriteLine("[TRACK {0}]", track.Number);
|
||||||
sw.WriteLine("MODE={0}", track.Mode);
|
sw.WriteLine("MODE={0}", track.Mode);
|
||||||
//indexes are BS, dont write them. but we certainly need an index 1
|
//indexes are BS, don't write them. but we certainly need an index 1
|
||||||
sw.WriteLine("INDEX 1={0}", track.LBA);
|
sw.WriteLine("INDEX 1={0}", track.LBA);
|
||||||
sw.WriteLine();
|
sw.WriteLine();
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace BizHawk.Emulation.DiscSystem.CUE
|
||||||
{
|
{
|
||||||
this.baseDir = baseDir;
|
this.baseDir = baseDir;
|
||||||
diBasedir = new DirectoryInfo(baseDir);
|
diBasedir = new DirectoryInfo(baseDir);
|
||||||
//list all files, so we dont scan repeatedly.
|
//list all files, so we don't scan repeatedly.
|
||||||
fisBaseDir = MyFileInfosFromFileInfos(diBasedir.GetFiles());
|
fisBaseDir = MyFileInfosFromFileInfos(diBasedir.GetFiles());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ namespace BizHawk.Emulation.DiscSystem.CUE
|
||||||
di = new FileInfo(path).Directory;
|
di = new FileInfo(path).Directory;
|
||||||
//fileInfos = di.GetFiles(Path.GetFileNameWithoutExtension(path)); //does this work?
|
//fileInfos = di.GetFiles(Path.GetFileNameWithoutExtension(path)); //does this work?
|
||||||
fileInfos = MyFileInfosFromFileInfos(di.GetFiles()); //we (probably) have to enumerate all the files to do a search anyway, so might as well do this
|
fileInfos = MyFileInfosFromFileInfos(di.GetFiles()); //we (probably) have to enumerate all the files to do a search anyway, so might as well do this
|
||||||
//TODO - dont do the search until a resolve fails
|
//TODO - don't do the search until a resolve fails
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -69,7 +69,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
{
|
{
|
||||||
foreach (var e in Entries)
|
foreach (var e in Entries)
|
||||||
{
|
{
|
||||||
//dont change rooted paths
|
//don't change rooted paths
|
||||||
if (Path.IsPathRooted(e.Path)) continue;
|
if (Path.IsPathRooted(e.Path)) continue;
|
||||||
//adjust relative paths
|
//adjust relative paths
|
||||||
e.Path = Path.Combine(basepath, e.Path);
|
e.Path = Path.Combine(basepath, e.Path);
|
||||||
|
|
|
@ -340,7 +340,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
|
|
||||||
private byte[] ReadSectorCached(int lba)
|
private byte[] ReadSectorCached(int lba)
|
||||||
{
|
{
|
||||||
//read it if we dont have it cached
|
//read it if we don't have it cached
|
||||||
//we wont be caching very much here, it's no big deal
|
//we wont be caching very much here, it's no big deal
|
||||||
//identification is not something we want to take a long time
|
//identification is not something we want to take a long time
|
||||||
if (!_sectorCache.TryGetValue(lba, out var data))
|
if (!_sectorCache.TryGetValue(lba, out var data))
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
{
|
{
|
||||||
var m_te = md.TOCTracks[i];
|
var m_te = md.TOCTracks[i];
|
||||||
|
|
||||||
//dont add invalid (absent) items
|
//don't add invalid (absent) items
|
||||||
if (!m_te.Valid)
|
if (!m_te.Valid)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
//Indices may need scanning sector by sector.
|
//Indices may need scanning sector by sector.
|
||||||
//It's unlikely that any software would be needing indices anyway.
|
//It's unlikely that any software would be needing indices anyway.
|
||||||
//We should add another index scanning service if that's ever needed.
|
//We should add another index scanning service if that's ever needed.
|
||||||
//(note: a CCD should contain indices, but it's not clear whether it's required. logically it shouldnt be)
|
//(note: a CCD should contain indices, but it's not clear whether it's required. logically it shouldn't be)
|
||||||
//Notable omission:
|
//Notable omission:
|
||||||
//Length of the track.
|
//Length of the track.
|
||||||
//How should this be defined? Between which indices? It's really hard.
|
//How should this be defined? Between which indices? It's really hard.
|
||||||
|
|
|
@ -25,7 +25,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void Convert_LBA_To_AMSF(int lba, out byte m, out byte s, out byte f)
|
public static void Convert_LBA_To_AMSF(int lba, out byte m, out byte s, out byte f)
|
||||||
{
|
{
|
||||||
lba += 150; //dont do this anymore
|
lba += 150; //don't do this anymore
|
||||||
m = (byte)(lba / 75 / 60);
|
m = (byte)(lba / 75 / 60);
|
||||||
s = (byte)((lba - (m * 75 * 60)) / 75);
|
s = (byte)((lba - (m * 75 * 60)) / 75);
|
||||||
f = (byte)(lba - (m * 75 * 60) - (s * 75));
|
f = (byte)(lba - (m * 75 * 60) - (s * 75));
|
||||||
|
|
|
@ -276,7 +276,7 @@ namespace BizHawk.Emulation.DiscSystem
|
||||||
{
|
{
|
||||||
int offset = d * 86 + w;
|
int offset = d * 86 + w;
|
||||||
CalcECC(src, src_offset, offset, 88, 43, out parity0, out parity1);
|
CalcECC(src, src_offset, offset, 88, 43, out parity0, out parity1);
|
||||||
//store the parities in the sector; thats where theyve got to go anyway
|
//store the parities in the sector; that's where theyve got to go anyway
|
||||||
dest[dest_offset + 1118 * 2 + d * 2 + w] = parity0;
|
dest[dest_offset + 1118 * 2 + d * 2 + w] = parity0;
|
||||||
dest[dest_offset + 1118 * 2 + d * 2 + w + 26 * 2] = parity1;
|
dest[dest_offset + 1118 * 2 + d * 2 + w + 26 * 2] = parity1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@
|
||||||
* as seen in yabause, there are 1000 u32s in this format:
|
* as seen in yabause, there are 1000 u32s in this format:
|
||||||
* Ctrl[4bit] Adr[4bit] StartFrameAddressFAD[24bit] (nonexisting tracks are 0xFFFFFFFF)
|
* Ctrl[4bit] Adr[4bit] StartFrameAddressFAD[24bit] (nonexisting tracks are 0xFFFFFFFF)
|
||||||
* Followed by Fist Track Information, Last Track Information..
|
* Followed by Fist Track Information, Last Track Information..
|
||||||
* Ctrl[4bit] Adr[4bit] FirstTrackNumber/LastTrackNumber[8bit] and then some stuff I dont understand
|
* Ctrl[4bit] Adr[4bit] FirstTrackNumber/LastTrackNumber[8bit] and then some stuff I don't understand
|
||||||
* ..and Read Out Information:
|
* ..and Read Out Information:
|
||||||
* Ctrl[4bit] Adr[4bit] ReadOutStartFrameAddress[24bit]
|
* Ctrl[4bit] Adr[4bit] ReadOutStartFrameAddress[24bit]
|
||||||
*
|
*
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace BizHawk.Bizware.BizwareGL
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// a software-based bitmap, way easier (and faster) to use than .net's built-in bitmap.
|
/// a software-based bitmap, way easier (and faster) to use than .net's built-in bitmap.
|
||||||
/// Only supports a fixed rgba format
|
/// Only supports a fixed rgba format
|
||||||
/// Even though this is IDisposable, you dont have to worry about disposing it normally (that's only for the Bitmap-mimicking)
|
/// Even though this is IDisposable, you don't have to worry about disposing it normally (that's only for the Bitmap-mimicking)
|
||||||
/// But you know you can't resist.
|
/// But you know you can't resist.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public unsafe class BitmapBuffer : IDisposable
|
public unsafe class BitmapBuffer : IDisposable
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
BitmapFontParser
|
BitmapFontParser
|
||||||
http://cyotek.com/blog/angelcode-bitmap-font-parsing-using-csharp
|
http://cyotek.com/blog/angelcode-bitmap-font-parsing-using-csharp
|
||||||
License not stated. I'm content with calling it public domain. As future work, the code could be replaced easily, so I dont consider this a big deal. It's most trivial code.
|
License not stated. I'm content with calling it public domain. As future work, the code could be replaced easily, so I don't consider this a big deal. It's most trivial code.
|
||||||
It loads fonts created by http://www.angelcode.com/products/bmfont/
|
It loads fonts created by http://www.angelcode.com/products/bmfont/
|
|
@ -30,7 +30,7 @@ namespace BizHawk.Bizware.BizwareGL
|
||||||
/// <exception cref="ArgumentException"><paramref name="colors"/> does not have exactly <c>4</c> elements</exception>
|
/// <exception cref="ArgumentException"><paramref name="colors"/> does not have exactly <c>4</c> elements</exception>
|
||||||
public void SetCornerColors(OpenTK.Graphics.Color4[] colors)
|
public void SetCornerColors(OpenTK.Graphics.Color4[] colors)
|
||||||
{
|
{
|
||||||
Flush(); //dont really need to flush with current implementation. we might as well roll modulate color into it too.
|
Flush(); //don't really need to flush with current implementation. we might as well roll modulate color into it too.
|
||||||
if (colors.Length != 4) throw new ArgumentException("array must be size 4", nameof(colors));
|
if (colors.Length != 4) throw new ArgumentException("array must be size 4", nameof(colors));
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
CornerColors[i] = colors[i];
|
CornerColors[i] = colors[i];
|
||||||
|
|
|
@ -57,14 +57,14 @@ namespace BizHawk.Bizware.BizwareGL
|
||||||
|
|
||||||
public void SetCornerColor(int which, OpenTK.Graphics.Color4 color)
|
public void SetCornerColor(int which, OpenTK.Graphics.Color4 color)
|
||||||
{
|
{
|
||||||
Flush(); //dont really need to flush with current implementation. we might as well roll modulate color into it too.
|
Flush(); //don't really need to flush with current implementation. we might as well roll modulate color into it too.
|
||||||
CornerColors[which] = color;
|
CornerColors[which] = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <exception cref="ArgumentException"><paramref name="colors"/> does not have exactly <c>4</c> elements</exception>
|
/// <exception cref="ArgumentException"><paramref name="colors"/> does not have exactly <c>4</c> elements</exception>
|
||||||
public void SetCornerColors(OpenTK.Graphics.Color4[] colors)
|
public void SetCornerColors(OpenTK.Graphics.Color4[] colors)
|
||||||
{
|
{
|
||||||
Flush(); //dont really need to flush with current implementation. we might as well roll modulate color into it too.
|
Flush(); //don't really need to flush with current implementation. we might as well roll modulate color into it too.
|
||||||
if (colors.Length != 4) throw new ArgumentException("array must be size 4", nameof(colors));
|
if (colors.Length != 4) throw new ArgumentException("array must be size 4", nameof(colors));
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
CornerColors[i] = colors[i];
|
CornerColors[i] = colors[i];
|
||||||
|
@ -234,7 +234,7 @@ namespace BizHawk.Bizware.BizwareGL
|
||||||
|
|
||||||
unsafe void DrawInternal(Art art, float x, float y, float w, float h, bool fx, bool fy)
|
unsafe void DrawInternal(Art art, float x, float y, float w, float h, bool fx, bool fy)
|
||||||
{
|
{
|
||||||
//TEST: d3d shouldnt ever use this, it was a gl hack. maybe we can handle it some other way in gl (fix the projection? take a render-to-texture arg to the gui view transforms?)
|
//TEST: d3d shouldn't ever use this, it was a gl hack. maybe we can handle it some other way in gl (fix the projection? take a render-to-texture arg to the gui view transforms?)
|
||||||
fy = false;
|
fy = false;
|
||||||
|
|
||||||
float u0, v0, u1, v1;
|
float u0, v0, u1, v1;
|
||||||
|
|
Loading…
Reference in New Issue