Commit Graph

144 Commits

Author SHA1 Message Date
brandman211 fcd8822a6b -Finished my simplification of InputAdapters for everything but TI-83 (I don't remember how to test it). Saved 183 lines from the last revision, and this number is probably going to grow tremendously after TI-83 is handled.
-Inadvertently fixed the seemingly broken Genesis 3-Button Controller mnemonics...the controllers weren't responding at all before. I guess refactoring and working with simplified code IS worth it. <_<
--That said, this is still really broken:
---Mnemonics don't show up while recording.
---Input goes past the frame length, and it's never labeled finished.
---Doesn't seem to sync at all.
---This exception:
---------------------------
Oh, no, a terrible thing happened!

System.Exception: unhandled opcode at pc=013648
   at BizHawk.Emulation.CPUs.M68000.MC68000.ExecuteCycles(Int32 cycles) in C:\Users\Administrator\Repo\bizhawk\BizHawk.Emulation\CPUs\68000\MC68000.cs:line 147
   at BizHawk.Emulation.Consoles.Sega.Genesis.FrameAdvance(Boolean render) in C:\Users\Administrator\Repo\bizhawk\BizHawk.Emulation\Consoles\Sega\Genesis\Genesis.cs:line 106
   at BizHawk.MultiClient.MainForm.StepRunLoop_Core() in C:\Users\Administrator\Repo\bizhawk\BizHawk.MultiClient\MainForm.cs:line 1676
   at BizHawk.MultiClient.MainForm.ProgramRunLoop() in C:\Users\Administrator\Repo\bizhawk\BizHawk.MultiClient\MainForm.cs:line 346
   at BizHawk.MultiClient.Program.Main(String[] args) in C:\Users\Administrator\Repo\bizhawk\BizHawk.MultiClient\Program.cs:line 47
---------------------------
System.Exception: unhandled opcode at pc=013648

   at BizHawk.Emulation.CPUs.M68000.MC68000.ExecuteCycles(Int32 cycles) in C:\Users\Administrator\Repo\bizhawk\BizHawk.Emulation\CPUs\68000\MC68000.cs:line 147

   at BizHawk.Emulation.Consoles.Sega.Genesis.FrameAdvance(Boolean render) in C:\Users\Administrator\Repo\bizhawk\BizHawk.Emulation\Consoles\Sega\Genesis\Genesis.cs:line 106

   at BizHawk.MultiClient.MainForm.StepRunLoop_Core() in C:\Users\Administrator\Repo\bizhawk\BizHawk.MultiClient\MainForm.cs:line 1676

   at BizHawk.MultiClient.MainForm.ProgramRunLoop() in C:\Users\Administrator\Repo\bizhawk\BizHawk.MultiClient\MainForm.cs:line 346

   at BizHawk.MultiClient.Program.Main(String[] args) in C:\Users\Administrator\Repo\bizhawk\BizHawk.MultiClient\Program.cs:line 47
---------------------------
OK   
---------------------------
--I don't think I broke anything...if anything, I fixed it slightly so that input is at least recognized in some way.
--Question: Is Genesis going to be properly supported by release time? If so, I might hold off a Genesis TAS until this is done. I hate Gens.
-Moved BUTTONS, COMMANDS, and new variable PLAYERS, which indicates how many players are for a given system, to Global.cs.
--If there's a better place for this, please let me know.
--That said, if there are places in the code that refer to the mnemonics of button names of a given system, we should definitely apply these variables for easier modification. Please let me know where these places might be.
-Fixed ImportText(). It now only reads as many controllers as the given system supports.

TODO:
-Merge the TI-83 stuff.
-Mnemonic header.
-Comment!
-Fix the TI-83 mnemonics with the IRCs blessings.
-Port the new mnemonics to the wiki.
-Fix the importers.
--I don't think ImportMMV handles the Pause and Reset commands (Or buttons, I don't even know) covert.
2012-02-20 23:25:26 +00:00
brandman211 1c1b61507d -Genesis, Gameboy mnemonics switched around.
-Made other commands lowercase.
-Added more mnemonics to the table.
-Added a command table. The writing of headers, as currently inconsistent, will probably be done manually, but it will still reference the table for easy modification.

TODO:
-Create a mnemonic header using the tables (Format now seemingly agreed upon is "Mnemonic |UDLRsSBA|").
-Generate button handling using the table, sandwiching this simplified code with the command handlers.
-Fix the TI-83 mnemonics (It has at least two redundancies: 1 and 2).
-Port mnemonics table to wiki page.
-Convert the remainder of the importers, working or not, from the string building method to the mnemonic generating one.
-Start working on more importers!
2012-02-20 05:54:31 +00:00
brandman211 cc4b2c324c -Fixed reset stuff.
--Zanac syncs.
--Applied error messages for invalid flags.
2012-02-19 20:09:42 +00:00
brandman211 791f9624f5 -Changed L to l for lag in NES mnemonics.
-Fixed PCE movie syncage.
-Preparing to revamp InputAdapters.cs with constant mnemonics.
2012-02-19 18:42:06 +00:00
brandman211 79d12b9181 -Refactored NES and PCE button orders.
-Realized that FixMnemonic is useless as GetControllersAsMnemonic() + WriteMovie() = Fixed.
-Finished the NES / PCE importers, now without string builders (Thanks zeromus)!
-Converted ImportMMV to this same method.

TODO:
-Decide how's the best way to handle the mnemonic header and implement it. Apparently, anything other than a predefined header and a | is considered as a comment, so I might do something like:

comment Mnemonic format:
[0|UDLRsSBA]
2012-02-19 07:09:24 +00:00
brandman211 5534bbd8b5 -Refactored NES and PCE button orders.
-Realized that FixMnemonic is useless as GetControllersAsMnemonic() + WriteMovie() = Fixed.
-Finished the NES / PCE importers, now without string builders (Thanks zeromus)!
-Converted ImportMMV to this same method.

TODO:
-Decide how's the best way to handle the mnemonic header and implement it. Apparently, anything other than a predefined header and a | is considered as a comment, so I might do something like:

comment Mnemonic format:
[0|UDLRsSBA]
2012-02-19 07:08:55 +00:00
zeromus 7ea52dfc8d fix bug in mnemonics generator that made it not as versatile as it was meant to be 2012-02-18 20:44:54 +00:00
brandman211 9fb0393b7f -Changed the PCE mnemonics. 2012-02-18 15:49:44 +00:00
brandman211 a6a81bb76a -Subtitles seem to work perfectly now.
-Included System.Globalization in a using statement to be more consistent with the rest of the uses of System.
-Removed trailing whitespace while I was at it. I'm OCD and it deeply bothers me, so I'll remove it on all the files that I commit in the future. Can't imagine anyone would object.
2012-02-16 00:55:07 +00:00
zeromus 80d8b617a5 a little bit of subtitle stuff cleanup, hopefully i didnt break anything 2012-02-15 19:50:25 +00:00
brandman211 213b347779 -Fixed the infinite loop caused by Movie.FixMnemonic. That was dumb.
-Removed the FCEUX handling from SubtitleList.AddSubtitle; it didn't work at all, which is good because we no longer support FM2 natively anyway!
-Added MovieImport.AddSubtitle, which parses FM2 subtitles and forwards them to the .TAS movie object.
--For the color, I used 16777215 as it seems the subtitles use decimal instead of hexadecimal...why?
--Even though I used this color, which is definitely the equivalent of FFFFFF (white), the subtitles show up as black. I don't think this has anything to do with the importer, but it's worth looking into.
2012-02-15 19:31:11 +00:00
brandman211 145830d5a4 -Began working on the importer.
--Created ImportFile to decide what function to use for each filetype.
---It currently automatically writes to a .TAS file, but that option will eventually only be applied when specified in the GUI, hopefully completely external from this class.
--Made IsValidMovieExtension work.
--Created LoadText to do the majority of the work that both .FM2 and .MC2 need to be done.
--.MC2 seems to work perfectly, not that it was a hard conversion!
--.FM2 seems to convert most headers correct, except for subtitles, which replaces the beginning portions of each subtitle's text with 0 0 120 4294967295. Not sure what that's about, though this sure feels like deja vu...
--I still need to switch around the order of the buttons the frames are added, but I need to find out what way I can do this without reinventing the wheel.
-Added the FixMnemonic function to Movie.cs. It currently does nothing, but my goal is to have it correct the mnemonic for all frames in a movie file based on the position of the characters.
--As of right now, ImportFile uses this.
-MainForm.IsValidMovieExtension only checks whether or not its .TAS or not now.

TODO:
-Fix the FM2 subtitles.
-Shift around the FM2 buttons.
--After completed, test a .FM2 file that should sync and see if it works, with and without FixMnemonic being used.
-Make FixMnemonic actually do something.
-Refactor code? I originally thought it'd be best to treat Movie.LoadText just like any other importer, but I think at this point it might just be best to keep these things completely separate.
-Consider the possibility of working with the binary file importers.
--Yes adelikat, I am somewhat interested, especially considering how useful it would be to have a working .FCM importer so I can compare old runs when TASing. I already was hoping to learn about .VBM and .SMV for my ButtonCount.lua script. By the way, might this be bundled with bizhawk as it is with FCEUX 2.1.6? :)
2012-02-15 06:54:09 +00:00
andres.delikat a45a98f773 MovieImport - implement IsValidMovieExtension() 2012-02-15 01:18:15 +00:00
andres.delikat ff5c9a2799 refactor movie convert into movie import. Currently this breaks movie conversion, as the main convert function now needs implementation 2012-02-15 00:43:21 +00:00
brandman211 a38afd4fb2 -Fixed NES movie mnemonics.
--.FM2 is no longer a valid movie extension, so it is no longer counted as such in IsValidMovieExtension.
-Reused the code from PCE controller setting for NES.
-Seem to support 4 controllers for the NES now.
-General code cleanups.

TODO:
-Input from the 3rd and 4th controllers doesn't seem to be polled properly. Figure out what's wrong here.
-The copypasta from PCE to NES could probably be made into one function. The same could be said about many other portions of this code...DRY.
-Now that the mnemonics are fixed, I will have to write a proper converter for FM2.
--Once this is done, I will try the same for PCE, even if it can currently run natively.
---Once this is done, IsValidMovieExtension might as well be removed in favor of only accepting .TAS files and converting everything else.
2012-02-14 04:28:47 +00:00
andres.delikat 823edd2f67 store lag frame information into movies. Have TAStudio highlight lag frames in pink. Currently only hooked up for the NES core. 2012-01-08 23:51:53 +00:00
andres.delikat 37619ba147 preliminary work for mnemonics set up for Genesis. Doesn't work yet though since it will need core controller work set up 2011-12-24 15:35:52 +00:00
andres.delikat fbc365c4d2 Fix loading of post movie savestates (savestates made while in movie finished mode). Complete fix When in read-only. While in read+write it throws a loadstate error. This isn't ideal but at least prevents possible movie corruption. 2011-09-29 01:46:35 +00:00
andres.delikat 6bbab41b0c PCE - Implement PCECD system id in core and in game info. Also set cancel property of LogWindow winform 2011-09-24 17:05:34 +00:00
andres.delikat edb40f4087 Movies - fix bug where rerecord count value was getting added as a comment on load 2011-09-24 16:09:40 +00:00
andres.delikat a827bb7838 Remove a debug oncreen message in movie savestates 2011-09-18 17:10:10 +00:00
andres.delikat a30a5290ca clear saveRam when loading a movie. Add movie name to saveram default path generation so that movies do not interfere with users saveram files 2011-09-17 14:23:23 +00:00
andres.delikat 21d396f9bc Fix minimum size on all winforms, also set max size where appropriate, fixed anchoring & resizing issues, and other misc. display cleanup 2011-09-11 01:01:40 +00:00
andres.delikat 5eba8bc7f3 Movies - fix problem with NES loadstate & timeline checks that caused the Frame value to not parse properly. Also add messages to the catch statement in the event of parse failure. 2011-09-10 02:08:16 +00:00
andres.delikat 45609f4e88 Movies - fixed major bug in rerecording logic. Loadstate was truncating movie input based on global.emulator.frame BEFORE loading that value! Thus loading a state (in record mode) from an event later than the current frame count was truncating the input, then loading the actual savestate. Movie loadstate now truncates based on the state's frame count 2011-09-07 01:18:58 +00:00
andres.delikat a787fe3c60 Movies - Fix a major logic flaw in the CheckTimeLines() logic. Should compare from 0 - state frame count, not 0 - length of state input log 2011-09-07 00:40:42 +00:00
andres.delikat 984abbb869 Refix bind savestates to movies option 2011-09-05 00:50:50 +00:00
andres.delikat bf76e1e7e0 Refix recording movies from "Now" so that the StartsFromSavestate flag gets properly stored into the movie file 2011-09-04 19:04:00 +00:00
andres.delikat a84f881c5c Movies - Remove UserMovie and change all references to it to Global.MovieSession.Movie, fix error in CheckTime Line logic, read-only savestates should now work 2011-09-03 18:07:30 +00:00
andres.delikat 276c759d88 Fixed Loadstate stream issues, rerecording is now possible again 2011-08-20 19:27:00 +00:00
kylethomson 2243c7dcad Fixed Multitrack-load crash.
Also, read-only can't be toggled while no movie active. 
Same for multitrack.
2011-08-17 02:06:50 +00:00
andres.delikat d10f38af5d Remove autofire from IController & inherited objects other than Controller 2011-08-09 00:57:56 +00:00
andres.delikat 9b2ba5c85c Basic implementation of Global.ActiveController, uses an ORAdapter to OR against Active Controller. Still TODO: setting up autofire controllers for platforms and a UI in the Controller Config 2011-08-09 00:51:46 +00:00
andres.delikat 0d01af5c7b Refactor autofire, remove the autofire adaptor. Added an autofire bool to IController and implemented it in the Controller object. Setting to true will turn the controller buttons into autofire buttons 2011-08-08 23:35:13 +00:00
andres.delikat d92c27f89d Autofire Input Adaptor, currently no UI for it 2011-08-07 23:26:06 +00:00
andres.delikat 64e38e83c8 Movie Loadstate - GUID checking in read-only mode + fix a crash bug 2011-07-31 17:35:02 +00:00
andres.delikat 3481943b74 Overhaul movie savestate logic - cleaned up a lot of code, implemented GUID, Future Event, and Timeline checks to read-only situations. Prevented loading of state if an error occurs. Still TODO - GUID checks in read+write mode 2011-07-31 16:41:27 +00:00
andres.delikat ce3bb25409 Movie object cleanup, movie savestate handling cleanup, save GUID into movie savestates 2011-07-31 01:15:14 +00:00
andres.delikat 60a4ea4426 Refactor movie code - a Loaded property, removed a lot of code that was a work around for this needed feature, movie can not write to disk unless this property is true 2011-07-30 23:59:31 +00:00
andres.delikat 2e68314e01 Movies that start from savestate now supported. Record Movie dialog "Record from Now" option implemented. ResetFrameCounter() added to IEmulator and implemented in all existing cores 2011-07-30 20:49:36 +00:00
zeromus 5580295085 movie input refactoring 2011-07-24 23:14:16 +00:00
zeromus e4f9f76198 fix ti-83 virtual keypad 2011-07-24 20:23:27 +00:00
zeromus 198431b8a2 add StickyXORAdapter 2011-07-24 19:52:13 +00:00
andres.delikat 72699b4ad7 another round of refactoring the Movie object 2011-07-17 17:52:39 +00:00
andres.delikat e6b2c794d4 Refactor the movie object, replacing Getfunctions with public properties, renaming of some functions, removing a duplicate function, other misc things 2011-07-17 14:39:15 +00:00
andres.delikat ee713acded Edit Subtitles Form - minor tweaks 2011-07-16 13:31:36 +00:00
andres.delikat b551d9dbdd Movie Subtitles - in Edit Subtitle dialog, parse color value as hex, in render panel read the subtitle color 2011-07-16 02:11:51 +00:00
andres.delikat 7293cd05cc Add error messages to movie convert functions, and other small cleanups, refactor calls to them to handle error messages 2011-07-14 01:12:18 +00:00
andres.delikat a8c66418e7 Movie Convert - started implementing an error message system, did FCM and MMV 2011-07-13 02:11:20 +00:00
zeromus 2c683dc90a dont crash on exit while writing inputlog 2011-07-13 01:45:40 +00:00