zeromus
3c6549a7bb
snesgfx-decode mode7 graphics
2012-09-21 17:21:21 +00:00
zeromus
72d4fefbe0
snesgfxdebug-fix 8bpp tile decoding and 16x16 tilemap rendering
2012-09-21 08:10:14 +00:00
zeromus
708b98b4b8
enum.HasFlag -- too good to be true? yes. 40x slower than doing an old fashioned bitmask check.
2012-09-21 07:10:54 +00:00
zeromus
70392be4e4
snes-all memory domains were showing WRAM instead of the right thing; fixed
2012-09-21 06:03:27 +00:00
zeromus
526078f578
snes-work on graphics debugger. some relayout, plus palette viewer
2012-09-21 05:56:47 +00:00
goyuken
c026b2dc81
slightly optimize previous commit by avoiding 32k unmanaged=>managed transition calls per second when skipping audio
2012-09-20 20:36:44 +00:00
goyuken
176ecd8650
support for !rendersound in LibsnesCore
...
worth about 5-10% on my machine in secret of mana opening
2012-09-20 20:25:40 +00:00
goyuken
51fc8e695c
add 'bool rendersound' to IEmualtor.FrameAdvance()
...
if false, the emulator is free to gain whatever speedup it can by not doing audio processing (shouldn't change anything sync related, though)
the core should still always call SoundProvider.GetSamples() after each FrameAdvance(), else DRAGONS
at the moment, only test-implemented in gambattehawk
2012-09-20 19:52:47 +00:00
goyuken
1301344d71
neshawk: fix: when paused, toggling "clip left and right 8" in nes graphics config caused garbage to show on screen.
2012-09-20 00:53:21 +00:00
zeromus
1760e9593f
nes-probably need to handle the left clipping case too
2012-09-20 00:24:46 +00:00
zeromus
e8487b77d8
change lua drawing to use an offset specified by the emulator core, so that drawing in the nes core can have nes-relative coords instead of multiclient-display-relative coords
2012-09-20 00:22:24 +00:00
beirich
18f3da0f55
gen: add missing savestate vars. rewind seems stable now from the games I've tested.
2012-09-18 11:09:05 +00:00
beirich
b2e48d8749
gen: savestates work, though they're nes-style brittle savestates for now
2012-09-17 23:28:22 +00:00
beirich
b04189b6b1
gen: rewind is working, savestates are not working [yet]. will fix more tomorrow
2012-09-17 05:48:24 +00:00
zeromus
c6a14d551c
snes-work on graphics tools a tiny bit
2012-09-17 00:16:19 +00:00
zeromus
b33fc4982c
remove derelict CoreVersion/Introspection stuff
2012-09-16 20:08:36 +00:00
zeromus
4018452f21
add CoreInputComm.CpuTraceEnable and CoreInputComm.CpuTraceStream, and use it in NES; set those appropriately from a gui component and you can effect user-controlled cpu tracing, if its been setup in the core he's interested in. CoreInputComm doesnt reconstruct between emulator instances, so this may not be the best way of hooking it up, but its serviceable.
2012-09-16 19:38:08 +00:00
beirich
eea2160df2
didnt meant to commit last time, but guess I should check this in so I dont break the build
2012-09-16 19:06:50 +00:00
beirich
5742d69f6a
2012-09-16 19:03:44 +00:00
zeromus
8cbc3ee2af
snes-setup hard and soft resets
2012-09-16 17:15:53 +00:00
goyuken
a87a9c1cd5
add "Default CGB" button to gambatte color chooser for default CGB grayscale
...
if no palette at all is available, the core will internally default to the "bsnes improved" palette
2012-09-16 17:09:52 +00:00
goyuken
727e441bb4
change gameboy control "Reset" virtual button to "Power" virtual button
...
some consoles have both "Reset" and "Power" notions, so this is to be more consistent
i'm not sure that i got all references...
2012-09-16 16:25:54 +00:00
zeromus
88fab46b21
fix error in snes Select and Start button binding (was using the NES bindings due to copy/paste error)
2012-09-16 16:23:10 +00:00
beirich
e208b147ae
gen: support save-ram. but not eeprom, yet.
2012-09-16 04:42:14 +00:00
goyuken
a7bdd745c6
move ColorChooserForm to the MultiClient
...
also disable its menu item if the emulator is currently in CGB mode (since it doesn't do anything)
2012-09-15 18:30:11 +00:00
adelikat
644f7415b9
Remove some delete controller images from the .sln file, GB Palette Config - misc dialog tweaks
2012-09-15 17:44:17 +00:00
goyuken
cfe73b292d
add gambatte boot flags to menu and config. i don't like all that stuff in mainform, but it works anyway...
...
TODO: these flags must also be added to .chickenfucker file header
2012-09-15 16:14:03 +00:00
goyuken
27b5d29f0c
Gambatte: soft resets (all 3 lines of code!)
...
Internally, Gambatte implements this as a full hard reset of everything except saveram. There are comments in the code to suggest that this is appropriate real console behavior...
2012-09-15 02:36:19 +00:00
goyuken
feaa652986
fix SMS SaveRAM == null in SMS
2012-09-14 23:31:10 +00:00
goyuken
16e831a84c
fix BRAM == null case in PCE
2012-09-14 23:18:16 +00:00
goyuken
83e145c36f
change the IEmulator saveram interface.
...
i don't like doing this, but there were already two emus with special bandaid logic in MainForm.cs
i hope this doesn't break something, but if it does i'll fix it
2012-09-14 22:28:38 +00:00
goyuken
4101efb92d
implement ClearSaveRam in gambatte core, and fix a bug with using memory domains before any frames have been run
2012-09-14 21:29:35 +00:00
goyuken
1697e77042
gambatte: leave CoreOutputComm strings empty since we have nothing to say (for the moment)
2012-09-14 15:50:35 +00:00
goyuken
6053d1bf89
add ability to save to gambatte-style palette files
2012-09-14 00:35:31 +00:00
goyuken
c05c9ebda7
add loading of gambatte-style palette files to the palette selector (includes drag and drop)
2012-09-14 00:02:37 +00:00
goyuken
f5d37cf73b
the world would end if microsoft ran it
2012-09-13 23:09:03 +00:00
goyuken
c72ac19037
gambatte pal editor: use system color picker dialog
...
... but something about the customcolors isn't working right?
2012-09-13 22:20:05 +00:00
goyuken
bf5625655d
rename gambatte memory domains per todo list
2012-09-13 21:19:26 +00:00
goyuken
12d06a2c94
add system bus memory domain to gambatte
...
in order to guarantee correct resolution of mappings and mmio every time, all calls go straight to the core and are not cached
this makes this domain slower in performance than the other ones. it can also be more difficult to use in some cases because you have to resolve mappings that you may not care about.
there is also the possibility of side-effects on reads, although i do not believe that this actually happens in any situations. still, use at your own risk.
2012-09-13 21:03:34 +00:00
beirich
2d2af1d143
oops
2012-09-13 04:15:25 +00:00
beirich
adee5befa5
Genesis ROM header parsing
...
and other stuff thats only committed because svn isn't decentralized!
2012-09-13 04:13:49 +00:00
goyuken
76c68bf6d5
add "interpolate" button to dmg color select
...
idea shamelessly ripped from bgb
2012-09-12 23:45:42 +00:00
goyuken
03caa3b32f
gambatte dmg palette editor. blah.
2012-09-12 22:18:51 +00:00
goyuken
1e6a9415c1
add Sound.Utilities.DCFilter and use it in gambatte
...
haven't decided yet whether i like the idea; it's mostly about playing nice with other audio mixing (from other applications)
well, it's not bad anyway...
2012-09-11 21:30:50 +00:00
goyuken
d57e195e52
gambatte: add oam, hram to memory domain list
2012-09-11 19:05:44 +00:00
goyuken
25c34d2ca6
significant speedup in gambatte MemoryDomains by keeping shadow copy of native memory
...
not quite sure at the moment what each of the domains actually is, though
2012-09-11 17:37:17 +00:00
goyuken
ed2b690f75
add memory domains to gambatte
...
appears to work, but i don't really have much of anything to test on it
ramwatch is horribly slow
2012-09-11 15:28:38 +00:00
beirich
bf504d1220
gen: work on sprite masking/overflow code. substantially improved. Fixes Sonic 1 title screen, Galaxy Force 2 level select, Landstalker sprite masking, and improved nemesis' test rom. Still something amiss in Sonic 2 title screen.
2012-09-11 05:00:45 +00:00
goyuken
d84f13275e
add IsLagFrame, LagCount, Frame to Snes savestates
2012-09-11 01:50:55 +00:00
goyuken
f2ce38851a
add IsLagFrame, LagCount, Frame to Gambatte savestates
2012-09-11 01:46:57 +00:00
goyuken
578e247524
add lag counter to LibsnesCore
...
per ilari, this should work correctly on certain games that poll the input in a particular way. however, it is completely non-functional on many other games. core digging is required for anything better.
2012-09-11 01:36:12 +00:00
goyuken
4e35cb566f
functioning saveram support for gambatte
2012-09-10 23:40:53 +00:00
andres.delikat
286e5c9b08
SNES - make controllers 2-4 work
2012-09-10 18:40:39 +00:00
goyuken
62f2771a8e
gambatte: lagframe stuff is hooked up and appears to be working
2012-09-09 21:57:15 +00:00
zeromus
8e42658702
completing the trifecta: fix the terrible nondeterminisms that made series of snes romloads act wacky
2012-09-09 21:19:54 +00:00
goyuken
a6caa8680d
fix up rom loading routines for libgambatte to use memory block directly (and not file)
2012-09-09 21:15:54 +00:00
beirich
90d1d12086
gen: fix some vram corruption issues
...
general: fix some build warnings
2012-09-09 21:15:20 +00:00
zeromus
f3b6afa5ad
change libco to use an msvc-compiled dll so that it doesnt get wrecked whenever the .net GC process suspends a thread in a coroutine. cant figure out how to get that same code working compiled by mingw32.
2012-09-09 19:02:13 +00:00
goyuken
8cdcae462d
gambatte savestates. slightly modifies some parts of the core and the pinvoke hookup to produce memory arrays instead of disk files as savestates.
...
does not work, for now. (sorry about the exceptions!)
2012-09-09 18:47:00 +00:00
goyuken
a277dfa1e5
wire controls into gambatte.
2012-09-09 14:17:57 +00:00
goyuken
3acc87c013
remove unnecessary extra video buffer in gambatte wrapper, and dispose of resampler properly
2012-09-09 13:35:58 +00:00
goyuken
72260690df
r2931 accidentally reverted r2929
2012-09-09 12:23:40 +00:00
beirich
a4f8ecc2e0
gen: fix render scroll plane size / window calculation bug. fixes gfx glitches in several games.
2012-09-09 04:22:44 +00:00
beirich
4dbab90b87
gen: remove old, unneeded hack. Fixes Quackshot.
2012-09-09 03:29:40 +00:00
beirich
cbe1292e16
fix GB RewireInputChain crash
2012-09-09 02:06:07 +00:00
beirich
3ed2261cf9
Delete some unused files
...
Move Nintendo\Docs folder to Nintendo\NES\Docs
2012-09-09 01:53:28 +00:00
beirich
11464a7e03
Move Gambatte files to Nintendo folder
...
Clean up some missing file links in the csproj file
2012-09-09 01:40:29 +00:00
beirich
e8de0327d2
Remove the 2 dead gameboy cores
2012-09-09 01:31:30 +00:00
goyuken
7962c6d2cd
change quality parameter for SpeexResampler in Gambatte from 5 to 2. Speedup: 85fps->1500fps
2012-09-09 01:04:39 +00:00
goyuken
f18eb2fef2
gambatte now has sound! output from the core is original 2MEGAHURTZ audio, but libspeexdsp handles it fine.
...
seems to be a lot of DC offset at times; not sure if there's a good way to remove it
2012-09-09 00:41:11 +00:00
goyuken
d3cb60d833
remove a few notimplemented exceptions, and add .gb, .gbc to the standard open file dialog.
...
.gbc fails to load because of something else...
2012-09-08 22:01:47 +00:00
goyuken
7b9bbe6b31
libgambatte can now get into game (with recognizable graphics). exceptions everywhere and nothing is hooked up, though.
2012-09-08 21:48:46 +00:00
goyuken
588d6214d5
more gambatte wrapper stuff
2012-09-08 21:36:04 +00:00
goyuken
7fc9dbd22c
typos, comments
2012-09-08 20:46:54 +00:00
goyuken
3061abbc4b
preliminary C api for libgambatte, plus pinvoke bindings
...
i'm a bit out of my league on this one, but that's ok
2012-09-08 20:22:07 +00:00
zeromus
285b9581f2
snes-work on graphics tools. can now render typical BGs for mode 1. SLOWLY!!!!! this is definitely getting turned into c++ code
2012-09-08 20:03:04 +00:00
goyuken
2a01e01e78
clean up resampler with rest of libsnes
2012-09-08 01:15:16 +00:00
andres.delikat
d56c0c354b
SNES - oops, hookup setting the frame counter as well
2012-09-07 20:31:05 +00:00
goyuken
71652b25dc
cleanup/simplify SpeexResampler
2012-09-07 20:12:47 +00:00
andres.delikat
afa27c1a26
SNES - hook up frame counter
2012-09-07 20:06:57 +00:00
goyuken
001b28c60e
replace junk and bad license resamplers with libspeexdsp (using p/invoke). MIT licensed, sounds pretty decent.
...
the p/invoke wrapper class is a hackjob i was using for testing and will be replaced.
2012-09-07 18:49:18 +00:00
zeromus
cfe1e749a1
hook up path config for intellivision and change erom and grom to use it. now you need erom.bin and grom.bin in the Intellivision directory by default.
2012-09-07 06:18:58 +00:00
zeromus
8eba3fb37c
stop crashing the intellivision core when the emulation menu is opened
2012-09-07 05:41:33 +00:00
zeromus
58c7966449
should probably add this file too
2012-09-06 08:35:45 +00:00
zeromus
ad6910fd74
snes-some beginning steps on graphics debugging tools. nothing to see yet, move along
2012-09-06 08:32:25 +00:00
brandman211
fd1560177e
-Implemented Colored Squares mode. It looks sensible in one of the improperly loaded ROMs that triggers it.
...
-Masked the Color Stack registers. This prevents the previously mentioned ROM from throwing an ArgumentException in ColorToRGBA.
2012-09-06 08:02:49 +00:00
brandman211
a6f11a7ade
-The STIC now displays the encoded background color when one is provided.
...
--The only time I've seen this was in a game that used FGBG mode, and it looked messed up.
-Implemented the parsing of the background for Color Stack mode.
--Because the STIC Registers aren't populated, this doesn't do anything. I'm not sure when this is supposed to occur.
-Determined when Colored Squares mode is active. I'll try to implement this mode shortly.
2012-09-06 07:31:25 +00:00
brandman211
8230f63ddf
The foreground now shows its true colors.
2012-09-06 06:56:21 +00:00
brandman211
641ef2bcff
-Unset pixels when necessary.
...
-Fixed the loading of a card's rows.
-Corrected the maskings. The top tiles look perfect now, but the text isn't showing up yet.
2012-09-06 06:20:50 +00:00
brandman211
06022c9076
-Added Read/WriteMemory to the STIC so that it can access the RAM it needs to draw the screen.
...
--Did the same for the PSG because why not.
-Discovered that the Commando HLT happens after the CPU goes idle, so there's no point in further investigating the issue until I emulate that.
-Parsed the BACKTAB cards for the STIC's Draw().
-Attempted to draw the screen using the aforementioned cards.
--I'm only trying to apply color to the foreground.
---Instead of converting the FG color to RGBA, I'm making it all white for now.
--There's clearly some sanity to what's being drawn, so I think each 8x8 card is being drawn in the right place.
--I think the next step is trying to make each individual card draw properly.
--I believe the algorithm for populating the FrameBuffer is VERY inefficient in the way it accesses memory. Will need some suggestions as to how I can rewrite this.
2012-09-06 04:51:17 +00:00
goyuken
a85dadcf7d
did a bunch of listening tests with libsnes and metaspu. switched to vecna metaspu
...
it seems to be the most stable when the system is fast enough to maintain approximately 100% speed.
also fixed up metaspu in dumping and switched it to vecna. i can now have clean audio while running libsnes with lua script and ffmpeg dumping.
2012-09-06 00:07:37 +00:00
goyuken
41e2e5bced
orphaned variable from r2898
2012-09-05 23:32:41 +00:00
zeromus
ade89fe798
snes-fix bug where loading more than one snes rom would wreck the emulator
2012-09-05 23:16:08 +00:00
goyuken
b0e3a332d8
abstract resampling functionality into IStereoResampler for testing purposes
...
add two example resamplers that implement this: LinearResampler and CubicResampler. both are very basic and sound like shit compared to libresample4j
ultimately, a single good resampler with a better license than libresample4j should be selected and used
2012-09-05 21:21:35 +00:00
goyuken
0430ec91c8
add resampler based on libresample4j (LGPL)
...
hook that up to libsnes, so libsnes audio now goes through libresample4j and then metaspu
it sounds ok
2012-09-05 18:52:17 +00:00
brandman211
1a760096bc
-Laid out the groundwork for the video provider.
...
--VirtualHeight / Width will be useful due to how the scanlines are doubled on TVs, but for now, I will just be drawing to scale.
-Enabled XOR@, SAR, and COMR. Advanced Dungeons & Dragons provided more test cases.
-Noticed that Commando, as well as some other games, triggers a HLT. This should be looked into later.
2012-09-05 04:42:49 +00:00
goyuken
fd5494a316
libsnes: dumb change to dumb code slightly lessens appearance rate of rice crispies in some situations
2012-09-05 01:30:09 +00:00
zeromus
b2b1c8755c
snes-apply lsnes patches
2012-09-04 20:23:18 +00:00
brandman211
44e03b1923
-Changed the amount of pending cycles to add when the STIC sets SR1.
...
--This number is fairly arbitrary, and I don't know why it works, but for now, it does.
--The values of INTRM don't match up exactly, but I think this is mostly a logging issue, though I still need to look into this.
-Fixed the Overflow Flag calculation.
--My original formula didn't compare the signs of the operands.
--It always needs to use the original operands, not the 2s complement one.
--As such, a result parameter has been added.
-Fixed the detection of a double swap, shift, and rotate in the related instructions. Ironically, I shifted one too many bits in my detection.
-Masked the result of left shifts and rotates to 0xFFFF so that the flags are calculated properly.
-Made RSWD (un)set the right flags.
-Enabled GSWD, MVI, SARC, CMP@, ADD, SUB@, INCR, RRC, SLR, SLL, RLC, ADDR, SUBR, SLLC, CMPR, and RSWD.
-COMR, NEGR, ADCR, SAR, ANDR, SUB, AND, XOR, and XOR@ remain disabled as I have yet to hit any test cases for them.
At this point, IntelliHawk is executing instructions indefinitely with what seems to be perfect results! I think I'm ready to hook up the screen.
2012-09-04 19:29:02 +00:00
zeromus
4903ad240c
snes-change libsnes color output to 32bpp to avoid having to uncrunch 16bpp pixels, for an indeterminate speedup
2012-09-04 19:25:09 +00:00
zeromus
9726b75ec4
snes-support layer toggles (needs gui hookups)
2012-09-04 19:12:16 +00:00
zeromus
76cfbc47c1
fix loading of non-snes games, and try to make snes core reset a little more reliable by reconstructing more
2012-09-04 18:04:06 +00:00
zeromus
c8aa937f4f
snes-memorydomains (but not systembus)
2012-09-04 17:29:20 +00:00
zeromus
ea6c0b9378
snes-enable savestates. dont get your hopes up, its a bit bloated and weird, and we still need to asses the bsnesariffic savestate synchronization issues. but, it works.
2012-09-04 08:21:01 +00:00
zeromus
f5c0965045
snes-support save ram
2012-09-04 07:09:00 +00:00
brandman211
ca8b778a52
-Noted interrupts in the log.
...
-Added and Interrupted flag to make it so that interrupts only trigger once per falling edge.
-For now, interrupts take 28 cycles.
-Made it so that the STIC tracks Pending / Total Executed Cycles just like the CPU.
-Forwarded the cycles executed in the CPU to the STIC's Execute.
-SR1 is now inverted when there are no pending cycles.
--If SR1 is high, 14394 cycles are added to the pending cycles.
--If SR1 is low, 3791 cycles are added to the pending cycles.
2012-09-04 06:26:08 +00:00
zeromus
caed262122
snes-try and determine whether game is snes based on libsnes's internal heuristics, and use .SFC for it anyway
2012-09-04 06:08:46 +00:00
beirich
2ef33fbfec
gen: fix dumb bug with sprite masking... fixes sprites showing up in WINDOW in many games where theyre not supposed to
2012-09-04 02:56:53 +00:00
goyuken
25e213f157
libsnes sound is functioning. very quick, very dirty
2012-09-04 01:21:14 +00:00
beirich
ff8a58a9b7
gen: Implement CRAM read, VSRAM read. Correct sprite coordinate masking, fixing games several games where sprites were missing.
2012-09-04 01:07:03 +00:00
zeromus
37e6f68370
bsneshawk step 1 of N - compile libsnes, make bsneshawk core, setup interop, support frameadvance, video, gamepad. games are playable, I think.
2012-09-04 00:20:36 +00:00
beirich
0a60a37705
gen: fix Flavio's DMA test rom. and hopefully something else too.
2012-09-03 22:26:33 +00:00
beirich
c9b3f7bedf
gen fixes: HINTs shouldnt fire during vblank, some DMA fixes, fix a render priority issue (albeit not the ideal fix), substantial rom compatibility testing
2012-09-03 16:01:56 +00:00
beirich
dd25cc924a
Move ICart.cs from directory/namespace for generic interfaces to Intellivision folder/namespace, as it is entirely Intellivision specific.
2012-09-03 00:45:30 +00:00
adelikat
1f128aeda4
Ram Search - small speedup on UpdateValues
2012-09-02 01:52:16 +00:00
adelikat
8c5d8741cb
Genesis - add Rom data memory domain
2012-09-02 01:33:12 +00:00
beirich
c91c001093
gen: Fix bug with word-reading Z80 bus status; fixes music in Monster World IV, Thunder Force 3 still boots
2012-09-01 21:04:40 +00:00
adelikat
2af24ba9fd
Genesis - add system bus memory domain
2012-09-01 19:49:40 +00:00
beirich
d586876f40
gen: implement H-ints
...
gen: implement Vram/Vram DMA copy (badly)
gen: fix dumb sprite rendering bug
gen: fix crash bug with certain WINDOW settings
2012-09-01 18:40:52 +00:00
adelikat
35ec42073f
NES - implement address poking on the system bus domain. Anything in the EXP, WRAM, PRG regions is done via the built in cheat system due to being handled by the mappers. This may not be the ideal way to do this but it seems to work well, and I don't know of a more logical way to handle this.
2012-09-01 18:34:31 +00:00
adelikat
9b7404b059
NES - Round 1 of Hook up NES cheats for system bus (i.e. game genie codes now work)
2012-09-01 14:13:36 +00:00
beirich
f21429b996
gen: implement WINDOW rendering
...
gen: initialize VDP registers to power-on values
2012-09-01 05:02:27 +00:00
beirich
e24f0962fc
gen: fix dumb tile priority bug (primarily affects Ghouls n Ghosts, which use the layers backwards from normal)
2012-08-30 04:29:33 +00:00
beirich
c4afd9f393
gen: allow word-reads to query Z80 bus status. now thunder force 3 boots.
2012-08-27 02:59:26 +00:00
beirich
8ad3e72ffa
Allow easy swapping of active 68000 core the C# core, or Musashi... As we are likely to be swapping between versions rapidly for some period of time.
2012-08-26 14:39:06 +00:00
beirich
2f73408029
gen: improved memory map and VDP I/O
2012-08-26 03:43:35 +00:00
beirich
58780191de
gen: implement raster effects
2012-08-24 04:45:09 +00:00
beirich
9545475455
gen: render priority improved somewhat... still some issues
2012-08-24 02:30:20 +00:00
beirich
575ceb3966
gen: Fix tile VFLIP bug, correcting the most obnoxious of the graphical glitches
2012-08-24 00:37:54 +00:00
pjgat09
78de49c923
Atari: Added an audio object to the TIA, including functions to run the 4 and 5 bit LFSRs. Also added some code for the first 4 audio modes, enough to generate samples for one of the audio channels.
...
Added a logic simulation of some parts of the TIA, including the audio portion. This requires logisim to run.
2012-08-23 02:04:24 +00:00
adelikat
67822be97c
NES - PPU - very minor cleanup
2012-08-23 01:28:33 +00:00
beirich
40a427e68f
md: correct hscroll offset calculation. genesis core 10% less embarassing.
2012-08-22 04:54:36 +00:00
adelikat
959e56b71a
NES - small (probably unnoticeable) speedup to WriteMemory()
2012-08-19 21:09:48 +00:00
adelikat
6473321100
NES - some optimizations to ReadMemory(), ~1fps speed up
2012-08-19 20:38:20 +00:00
adelikat
70929679d5
NES - don't recalculated the framebuffer constantly, instead only do it once per frame. ~1fps speed up
2012-08-19 20:01:17 +00:00
adelikat
493cff72c4
NES - tiny speedup
2012-08-19 19:21:35 +00:00
brandman211
26b1d06b7a
-Simplified the CPU / STIC connection.
...
-Made FrameAdvance handle the pending cycle loop. During each iteration, it runs one instruction and ticks the STIC accordingly.
2012-08-14 03:58:11 +00:00
brandman211
9100232547
-Made connections between the signal pins on the CP1610 and the STIC.
...
--Not sure why the STIC has any connection to the SST, but the docs on the SST are virtually non-existent from what I could find.
--I took advantage of Func and Action instead of passing bool references to both devices. I think this makes sense.
-Added reset functions for both devices.
My comparison log for INTRM is still weird because it says it is true initially (Expected) and remains as such after the first instruction (A bit odd). I think this happens because the STIC is supposed to "tick" and shift SR1 to false immediately, but the STIC tick happens after the CPU tick, and the CPU tick is where the logging happens. I need to find a better place to put this logging, and I need to implement the STIC ticking for IntelliHawk. I'm not positive how to approach the latter issue as I assume a tick means one instruction execution, and my executions happen in a loop on the CPU, which has no reference to the STIC, so I'm not sure where this fits into the equation.
2012-08-13 08:10:15 +00:00
adelikat
f84a3709c9
Misc code cleanup
2012-08-12 01:09:30 +00:00
brandman211
c6cf18061f
Scratchpad RAM, Graphics ROM, and Graphics RAM are apparently all 8-bit.
2012-08-10 20:40:34 +00:00
brandman211
5239b4f55b
-Separated the STIC and PSG memory map logic into new objects.
...
-Foreground / Background | Color Stack Mode
--Actually made a boolean for it (FGBG).
--Reading from a write-only STIC alias of $21 does change the STIC into Color Stack mode, but it doesn't actually read.
--Color stack mode is enabled when $21 or its alias is read and it is disabled (FGBG) when written its written, both having to occur during VBlank Period 1.
---This is what I gathered from the wiki, but I'm confused as to why it says that "The STIC stays in this mode until the program accesses location $21 again." I'm assuming this doesn't mean the mode changes on every access because then I don't understand why a read would change to a different mode than a write.
--FGBG is disabled by default. I don't think it matters.
2012-08-08 23:05:55 +00:00
beirich
b07008c7e7
Genesis vdp: small loadstate fix
2012-08-08 00:44:08 +00:00
brandman211
0d20c133a5
-Moved the reset address to the CP1610 and made RegisterSP/PC private.
...
-Created helper functions for indirect ops; Indirect_Set will be needed for interrupts.
2012-08-06 15:51:35 +00:00
adelikat
1bce6a724d
oops, add Mapper197.cs
2012-08-05 22:28:03 +00:00
adelikat
975d449722
AxROM (Mapper 7) - make all AOROM games not emulate bus conflicts, fixes various Wheel of Fortune games, Double Dare, and Jeopardy
2012-08-05 22:02:58 +00:00
adelikat
ea8d47bcc0
Start Mapper 197 (based on MMC3) and sort out the use of this vs Mapper 91.
2012-08-05 21:34:00 +00:00
zeromus
6a63f2f197
nes-work on mapper091 a bit, but its still not right
2012-08-05 20:19:07 +00:00
adelikat
77da639dc6
NES - Fix Mapper 50
2012-08-05 19:20:54 +00:00
brandman211
b83bb1901d
-When neither the cartridge nor hardware responds to a read, it now returns 0xFFFF instead of throwing an exception.
...
-I will now assume that 0x7000 is not mapped for the sake of continuing on. I will need to implement a mapper system shortly though.
--Did the same thing for 0x4800.
-AND@, MOVR, CMP enabled.
-Made the logging separator generate before an instruction instead of after the register states. This is quite petty, but I don't like the separator at the end of the file.
I hit an infinite loop, and I'm very very certain it's happening because I don't have an interrupt system yet. Time to stop avoiding that!
2012-08-05 05:59:55 +00:00
adelikat
33954ddef7
NES - map MAPPER219 to NROM (fixes a version of 3D Block)
2012-08-04 19:22:49 +00:00
adelikat
c0706ed0ac
NES - add Mapper 120 (not documented by Disch docs), used by Tobidase Daisakusen (FDS Conversion). Mapper implementation based on FCEUX but game freezes before gameplay starts (plays fine in FCEUX)
2012-08-04 19:02:51 +00:00
adelikat
a7b847dbe2
NES - some small easy optimizations to the APU (very small)
2012-08-04 02:41:15 +00:00
adelikat
b10769ab4a
NES - dsiable NESWatch checks in ReadMemory since this feature is not yet used for anything
2012-08-04 01:54:19 +00:00
adelikat
fba6e64c58
NES - some small speed optimizations
2012-08-04 01:47:54 +00:00
andres.delikat
31db5f9d05
NES - better handling of bus conflicts for AOROM board, fixes Wheel of Fortune
2012-08-03 14:12:04 +00:00
adelikat
70f07346b1
NES - start VRC6 sound, currently sounds terrible
2012-08-03 02:08:42 +00:00
andres.delikat
4754889131
NES - mapper 231 - optimize the ReadPRG() method
2012-08-02 21:05:15 +00:00
brandman211
97727ab658
-Fixed the memory mapping. I don't know why I thought I'd be able to just mask addresses to the length of the segment and think it'd work...
...
-Tried two methods of parsing the ROM file. Neither of them worked.
2012-08-01 17:45:37 +00:00
adelikat
accd643fde
NES - progress on mappers 90 & 209
2012-08-01 02:55:01 +00:00
andres.delikat
eeb0171eda
Start mapper 90/209
2012-07-31 22:04:45 +00:00
brandman211
80a0f8f75b
-Made Intellicart its own class.
...
-Separated cartridge logic into a separate ICart named Cartridge.cs.
-Made WriteMemory return a bool to match ICart.Write. It currently returns true if either the cart or the core responded.
TODO: Parse the vanilla Intellivision ROM, which will hopefully include the read / writability of the data segments. adelikat seems to think that I just need to send the bytes to $5000, but I'm not convinced.
2012-07-31 06:54:20 +00:00
adelikat
a5262488c7
NES - fix mapper 96 prg mapping. These games are working as well as can be tested without better peripheral support, so I'm considering this mapper complete.
2012-07-31 03:07:38 +00:00
adelikat
4930979940
NES - progress on mapper 96, Oeka Kids - Anpanman no Hiragana Daisuki seems to play (but I can't get passed the title screen without Oeka Kids tablet emulation). Oeka Kids - Anpanman to Oekaki Shiyou!! fails to load (suggesting a PRG mapping problem?)
2012-07-31 02:58:59 +00:00
brandman211
0d768ef710
Finished the Memory Map. I think the cartridge logic needs to be separated.
2012-07-31 01:39:47 +00:00
adelikat
c04b750d6a
Finish mapper 245
2012-07-31 01:01:15 +00:00
brandman211
f66d92f2a5
Started filling the gaps in the Memory Map, getting up to 0x7FFF. Once complete, a lot of TODOs remain, the most important being the actual mapping of the cartridge.
2012-07-30 22:25:00 +00:00
andres.delikat
a34bf45610
Add islag to savestates (now lagframe alert status updates when loading a state)
2012-07-30 14:42:52 +00:00
andres.delikat
daff01ad2e
Genesis - add lag and frame counts to savestates
2012-07-30 13:43:25 +00:00
adelikat
59ba7efdaf
NES - start mapper 18
2012-07-29 22:40:57 +00:00
adelikat
31843f3e3a
NES - mappers 74, 192, 194 - set VRAM sizes when mapper object is created, this removes the need to set vram in the gamedb.
2012-07-29 18:43:21 +00:00
adelikat
d4ac95bd30
NES - implement mappers 74 and 194. Added gamedb entries for the games I could find that correspond to these mappers
2012-07-29 18:35:24 +00:00
adelikat
71865576a7
NES - finish mapper 192
2012-07-29 18:12:37 +00:00
adelikat
7cbee7bde4
NES - mapper 74 - implemented chr-ram behavior, however, it does not work (chinese characters still missing in dialogs, but this checkin causes no regressions)
2012-07-29 17:55:45 +00:00
adelikat
047ed975d1
NES - implement mapper 234
2012-07-29 03:42:05 +00:00
adelikat
c555e1df40
NES - mapper 52 complete
2012-07-28 18:53:26 +00:00
adelikat
9e96eb9ddc
NES - start mapper 52
2012-07-28 18:14:04 +00:00
adelikat
1fb7d9a8a6
NES - Mapper 45 - oops, add lock_regs flag to savestates
2012-07-28 15:42:57 +00:00
adelikat
678e60815e
NES - Mapper 50 - hook up IRQ logic?
2012-07-28 13:19:12 +00:00
adelikat
8d45516811
NES - mapper 50 - fix mirroring
2012-07-28 12:35:51 +00:00
adelikat
5d521a5132
NES - mapper 50 - some fixes, almost complete
2012-07-28 03:37:06 +00:00
adelikat
7805c460d0
NES - start mapper 50, but it doesn't work
2012-07-28 03:11:39 +00:00
adelikat
10c71da526
NES - implement mapper 45
2012-07-28 01:29:06 +00:00
adelikat
524bc29b43
NES - remove some console logging spam on mapper 49
2012-07-28 01:02:16 +00:00
adelikat
9ee133866d
NES - complete mapper 205, slight fix to mapper 91 (still not working)
2012-07-27 02:14:18 +00:00
andres.delikat
f72905f602
NES - start mapper 96 (prg mapping working)
2012-07-24 14:32:09 +00:00
adelikat
d774e49cd8
NES - Mapper 245 - do chr-ram logic. The 3 games I found correctly labeled as 245 (Yin He Shi Dai, DQ7, Hyrule Fantasy) all fail to run properly in this implementation, and FCEUX.
2012-07-24 00:12:40 +00:00
andres.delikat
b08c2861a4
NES - start mapper 245 prg mapping working (possibly)
2012-07-23 22:15:22 +00:00
adelikat
ed16f40529
oops, forgot to add Mapper205.cs
2012-07-22 20:11:55 +00:00
brandman211
743480e26f
-Logging now uses a static StreamWriter instead of building the string and writing on destruction.
...
-Applied to the old Gameboy core. Why not? It at least fixes that annoying bug from before if we ever care to use it again.
-Both logs are now written to different files.
2012-07-22 18:40:28 +00:00
brandman211
9f2bcf3318
-Fixed logging.
...
--It now just builds a strings and writes on finalization.
-Fixed up format strings.
-As RegisterPC already increments upon reading the third decle, I now just store PC as the return address for jumping instead of PC + 1.
2012-07-22 18:08:10 +00:00
brandman211
60c5a1ce58
Added logging for the CP1610. Not working for some reason.
2012-07-22 17:18:11 +00:00
adelikat
b089f2996c
NES - decently support mappers 74 and 192 (games play fine other than missing characters in text boxes))
2012-07-22 16:57:44 +00:00
adelikat
91be138920
NES - fixes to mapper 91, still fails
2012-07-22 15:35:19 +00:00
adelikat
f85b6a017b
NES - checkin start of mapper 91
2012-07-22 01:02:18 +00:00
adelikat
225079a843
NES - implement board MLT-ACTION52 (Mapper 228) for both Action-52 and Cheetahmen II
2012-07-21 20:40:10 +00:00
zeromus
e66e936567
nes-fix mapper 061
2012-07-21 19:45:16 +00:00
adelikat
b8a16f93fa
Implement mapper 243
2012-07-21 19:23:05 +00:00
adelikat
f16a44d4e6
Start Mapper 243
2012-07-21 18:54:12 +00:00
adelikat
8aeb313381
Fixes to mapper 164, Final Fantasy V has a broken title screen but otherwise playable. Implemented based on Disch's original notes and so not quite complete.
2012-07-21 18:31:41 +00:00
adelikat
544410b4d8
Fix mapper 154 (Devil Man)
2012-07-21 17:51:52 +00:00
adelikat
86e14410b7
NES - mapper 225 finished
2012-07-21 17:19:59 +00:00
brandman211
0a0763966c
-Refactored of the executor / disassembler / Intellicart to use more descriptive variable names and types to clear up a lot of confusion.
...
-Added implementation for NOP (6 cycles of nothing).
-Made SWAP actually store the result (Still disabled).
-Added breaks to the swap / shift / rotate cases (Yikes).
Instruction disassembly:
JSRD R5, $1026
MVI@ R7, R6
JSR R5, $1A83
MVO@ R5, R6
MVO@ R0, R6
MVO@ R1, R6
MVI@ R7, R4
MVI@ R7, R0
JSR R5, $1738
MVO@ R5, R6
XORR R5, R5 <- Needs implementation.
2012-07-21 05:25:52 +00:00
andres.delikat
5f4ad218a2
NES - start mapper 225
2012-07-20 21:48:16 +00:00
brandman211
610acf6ad6
-Made MVI@ and ADD@ follow the stack and immediate mode rules for incrementing / decrementing the SP / PC.
...
-Disabled Intellicart hook for ReadMemory, which seemed to be interfering.
-Implemented MVO@.
-Several instructions are now executed in succession until it hits the unimplemented "XORR R5, R5".
I should probably refactor Disassemble and Execute to label registers as source / destination to avoid further confusion at some point. My disassembly might have the source / destination registers flipped as well.
2012-07-20 07:22:41 +00:00
adelikat
96e7d85122
NES - add mapper 61, chr mapping is off somehow
2012-07-20 03:52:14 +00:00
zeromus
dd504a4960
nes-fix mapper057
2012-07-20 03:19:19 +00:00
adelikat
afbde96fe5
NES - fix some chr mapping logic in Mapper 57
2012-07-20 02:57:46 +00:00
andres.delikat
2e71b04de4
Start mapper 57
2012-07-19 18:30:39 +00:00
zeromus
3321c3e2c4
nes-fix mapper226
2012-07-19 18:20:32 +00:00
andres.delikat
77f4eeeac1
NES - implement mapper 58
2012-07-19 16:01:40 +00:00
andres.delikat
a9323e0386
NES - Implement mapper 62
2012-07-19 15:51:41 +00:00
andres.delikat
8f95b611a5
BizHawk - implement mapper 201
2012-07-19 15:01:32 +00:00
andres.delikat
c256e90a9d
NES - add mapper 203, doesn't play the 35-1 properly, but it doesn't run in fceux as well, documentation may be off, or the ROM i used is bad (not a lot of info on good dumps for these types!)
2012-07-19 14:13:45 +00:00
adelikat
876007c502
NES - fixes to mapper 226
2012-07-19 02:56:43 +00:00
brandman211
e73c48219a
-Loaded EROM / GROM.
...
-Fixed disassembly for JMP:
--Now it uses the parameter pc, not RegisterPC.
--I was loading both the second and third value from the second's address.
--Casting the calculated addresses to bytes when addresses are 16-bit was a bad idea.
--Removed a closing parenthesis I accidentally stuck in the formatting.
It seems that I've gotten far enough to use the Executive ROM as a test case! Now to go instruction by instruction and see if they work as planned and hope this will all eventually make something.
2012-07-19 00:05:08 +00:00
brandman211
198c60af88
-Refactored ReadMemory so that both the core and cart addresses are read.
...
--Afterwards, the data is reconciled, right now by chucking out the core value if the cart responded.
-WriteMemory now writes to both the core and the cart unconditionally.
--Each case now breaks out of the switch statement in case we want to do more complex things at the end of the function later on.
-All default paths in both functions now throw an exception.
2012-07-18 06:19:03 +00:00
brandman211
1ee1d03aea
-Parsed / implemented fine addresses for the Intellicart.
...
-Implemented the final CRC check.
I didn't get around to implementing bank-switched ranges, but I don't think it's worth worrying about that right now considering that the Intellicart is not marked as readable at the initial PC, so something is either wrong or I need to implement more things before this will work. I think I'll put Intellicarts on hold and try to get a .int / .bin to run in the meantime.
2012-07-18 05:35:10 +00:00
adelikat
188716ab7b
Start mapper 226
2012-07-18 04:22:41 +00:00
adelikat
ecd3a2dd84
NES - add mapper 233
2012-07-18 04:08:37 +00:00
adelikat
803833d04a
Fix Mapper 230
2012-07-18 03:00:52 +00:00
adelikat
ea60a2c9f8
Mapper 60 - a more respectable bit logic implementation in ReadPRG
2012-07-17 23:58:53 +00:00
adelikat
2174e9938f
Implement mapper 60
2012-07-17 23:52:55 +00:00
andres.delikat
8aea375f9f
Mapper 230 - fix mirroring and some prg mapping
2012-07-17 23:05:58 +00:00
andres.delikat
d939e66867
NES - Implement a SoftReset function into the board base, Mapper 230 - implement mode switching via soft reset, implement prg mode 0, game select screen now playable, games are not
2012-07-17 15:24:36 +00:00
andres.delikat
fa449a5116
NES - add mapper 230, contra mode is working, still todo: implement mode toggling on soft reset
2012-07-17 14:02:56 +00:00
zeromus
5eaf27e510
nes-fix mapper 231
2012-07-17 06:24:36 +00:00
zeromus
309d6b4e64
nes-fix mapper 200
2012-07-17 06:19:03 +00:00
brandman211
0a3a392285
-Attempted to parse out memory attributes.
...
--In my test case, only a few segments were set to readable and nothing else was set. 0x1000, which is where the PC is initialized to, certainly isn't in a writable page.
--Although I've read that these memory attributes affect the Intellivision and not the Intellicart, I'm pretty sure this has to be implemented in the Intellicart so that my Read/WriteCart functions can choose to respond / not respond depending on these attributes. I very well could be wrong.
-Hooked Read/WriteCart into Read/WriteMemory.
-Implemented memory attributes into Read/WriteCart.
--TODO: Bank-switching.
TODO: Fine address table and memory attribute / fine address checksums.
2012-07-17 05:32:00 +00:00
brandman211
cd5458a5e4
Fixed CRC. Passes!
2012-07-17 04:16:11 +00:00
adelikat
bbf5be7d74
NES - add mappers 200 & 231, PRG mapping isn't quite right on either but some games work
2012-07-17 04:06:48 +00:00
adelikat
ee5db4cc06
Mapper 112 - Finish implementation of CHR mapping, and misc small cleanups
2012-07-17 02:01:53 +00:00
adelikat
69712a203d
Remove compatibility.txt and replace with a link to the wiki page
2012-07-17 01:46:55 +00:00
adelikat
5df5def02d
remove NES test status doc that is outdated and obsolete to this page: http://tasvideos.org/EmulatorResources/NESAccuracyTests.html
2012-07-17 01:06:38 +00:00
zeromus
ecd58fc96e
nes-protect from syncstates which dont call base.SyncState
2012-07-16 22:06:55 +00:00
zeromus
9c2a521c19
nes-fix m112 and some other unnecessary things
2012-07-16 22:01:10 +00:00
andres.delikat
ad2e9267e3
NES - Mapper 112 - fix prg bank selection, however, game still fails to run
2012-07-16 21:12:01 +00:00
brandman211
21558eaf11
-Made ReadMemory and WriteMemory for the Intellicart Read/WriteCart and made them return nullable values instead of passing an out value.
...
-Started parsing data segments.
--CRC check fails. :(
-Added .bin and .rom to the Intellivision associated file extensions in the load ROM dialog.
2012-07-16 05:52:01 +00:00
zeromus
cf5c972990
nes-try fixing m207
2012-07-16 03:04:44 +00:00
zeromus
06c44cf040
nes-add NES-JLROM for mr gimmick! (e) - but it doesnt work cos its pal
2012-07-16 02:59:54 +00:00
adelikat
2d89f5485f
Implement Mapper 207, Fudou Myouou Den now playable but graphical issues.
2012-07-16 01:51:16 +00:00
adelikat
1751e615d7
Oops, update csproj file with new mapper files, update mapper compat list
2012-07-15 23:58:00 +00:00
adelikat
c9128cc78e
Start Mappers 154, 112
2012-07-15 23:12:52 +00:00
zeromus
3ae3a52f7a
nes-do mapper088 differently
2012-07-15 22:30:25 +00:00
zeromus
a33859fc1e
nes-fix mapper 088
2012-07-15 22:22:57 +00:00
adelikat
f62607dea9
Start mapper 88
2012-07-15 21:45:28 +00:00
brandman211
4f9539b73c
-Made Executive ROM and Graphics ROM read-only. I still haven't made the memory map accessibility limited by the VBlank Period, but I'm assuming that should come way later.
...
-Initialized the memory devices with a tentative size that ignores the unofficial ranges.
-Masked addresses to match those sizes (That's my understanding of what the memory map needs to do based on other examples).
-Added the ICart interface.
-Started the Intellicart parser; got far enough to know that the files I'm working with are not Intellicarts. ^_^
2012-07-15 08:38:50 +00:00
beirich
d24d3ae932
fix a dumb PAL bug. possibly for the second time.
2012-07-15 07:15:31 +00:00
zeromus
a47c70d0ef
nes-fix #12 "Strange "White noise" sound during 1943 (USA) intro" as well as a boatload of aesthetic improvements to make the sound output not so embarassing. no speedups whatsoever though.
2012-07-15 00:09:34 +00:00
zeromus
1f588c451f
nes-add broken bisq apu. it probably wont be fixed. but its a lot of work, so there it is. also remove spam in SXROM
2012-07-14 18:43:37 +00:00
andres.delikat
0834c63a43
NES - sound config dialog for toggling sound channels
2012-07-12 23:13:22 +00:00