Commit Graph

328 Commits

Author SHA1 Message Date
brandman211 8a24de458f -Added the SNES formats to the Import dialog.
-Figured out how to get files from the .LSMV archive. Will write the input parser shortly.
2012-09-12 04:11:35 +00:00
brandman211 f11a790e34 -Added ImportLSMV, ImportZMV. Neither do anything substantial yet.
-Added .int to the Rom Files list.
2012-09-10 21:35:56 +00:00
beirich e8de0327d2 Remove the 2 dead gameboy cores 2012-09-09 01:31:30 +00:00
adelikat ead2d186cf SNES - hook up movie playback, probably, needs a frame counter to use it 2012-09-05 02:24:03 +00:00
adelikat f1de424aa3 Fix input display that I broke yesterday. Hook up SNES input display and movie recording (but not playback) 2012-09-05 02:07:30 +00:00
adelikat 632127fe0a NES - don't record lag frame status into movies, it is not necessary for TAStudio anymore 2012-09-03 21:38:11 +00:00
adelikat 80012d29c6 TAStudio - store whether or not a frame was a lag frame along with the state for green zoning, show lag frames in red based on this flag rather than something recorded into the movie file, also fixed a bug I introduced in the last commit 2012-09-03 21:28:10 +00:00
adelikat ac91ed67a6 Movies - refactor & cleanup the MovieLog class 2012-09-03 20:55:05 +00:00
adelikat 6142e2a8f1 Movies - a bit more cleanup 2012-09-03 20:26:51 +00:00
adelikat 1b20175a81 Movies - final round of refactoring, also removed all code relating to the StopOnFrame variable. The fast foraward button on TAStudio now loses some functionality, but the code that did it needed an overhaul 2012-09-03 20:17:57 +00:00
adelikat 8f408737da Movie refactoring - round 2 2012-09-03 19:42:53 +00:00
adelikat 27f4663125 Movies - round 1 of code cleanup (no functional changes) 2012-09-03 15:05:09 +00:00
adelikat 7bc1e88d1d TAStudio - Rewind button - fix logic when movie is finished or inactive 2012-08-28 03:18:53 +00:00
adelikat 7ad3ea9ef5 Movie - clean up some code that has gotten crusty in the frame loop and refactored it, fixed logical errors at the end of a movie regarding playback, rewind, and loadstate. Movies now go correctly into finished or play mode under various circumstances. Removed the stop on frame code because it was breaking things, this will be a regression in functionality in tastudio until it is rethought. 2012-08-25 23:31:54 +00:00
adelikat 5486acbbbc Movies - fix a regression that happened at some point where the movie is not truncated on a loadstate that triggers record mode (instead it would keep the entire movie in the savestate and record over each frame, this would leave garbage data that could lead to potential desyncs) 2012-08-25 22:18:54 +00:00
adelikat 514c3200d7 remove more tastudio instances in movie class, TAStudio - re-hook up double click event 2012-08-18 00:04:12 +00:00
adelikat c9ddbd6d89 TAStudio - implement Cut function, fixes to insert, and delete, minor cleanup of movie object 2012-08-17 23:56:37 +00:00
adelikat 952892b5df TAStudio - implement Truncate Movie 2012-08-17 03:24:33 +00:00
adelikat d7e05ceb32 TAStudio - implement clear frame, pause emulator on TAStudio load 2012-08-17 02:26:47 +00:00
adelikat 9baf1b8f28 TAStudio - implement clone frame feature, and some UI and Movie object cleanup 2012-08-17 02:18:25 +00:00
brandman211 1bedd81666 That optimization for movie length calculation in the PlayMovie dialog now accounts for files with new line characters of all sizes. 2012-07-25 08:01:02 +00:00
brandman211 5ce6050cb4 -As frames and subtitles actually occur more than once, I put them on the top of the big if / else if block for ImportText so that it doesn't have to do unnecessary ToLower() and StartsWith("name") calls.
-Put frames and subtitles into functions because vec\ gives good advice.
2012-07-04 07:34:52 +00:00
brandman211 c06a44c495 ImportText now only allows version 3 for .FM2 files. 2012-07-04 06:41:57 +00:00
brandman211 62e9143fdd -Made the boolean parsing more consistent.
-Subtitle parsing now allows excessive whitespace.
2012-07-03 22:24:24 +00:00
brandman211 1aa8030cf4 ImportText now works case-insensitively and trims whitespace. 2012-07-03 16:47:08 +00:00
brandman211 24a27d543a Fixed the case (should have detected "guid", not "GUID") for parsing the guid, preventing an extra space from showing up in converted FM2 files. 2012-07-03 16:04:17 +00:00
phillip.grimsrud f7fa9f7751 1. Fixed an Atari 2600 mnemonic bug for issue 77. Note that TAStudio is still broken for Atari 2600. 2012-06-30 00:42:42 +00:00
adelikat 4d91471bab Record movie dialog - use filesystem safe name of game when choosing a default name. Fix regression that made default filename not populate in the savefile dialog. 2012-06-25 00:06:07 +00:00
phillip.grimsrud a6ced95e07 1. Fixed tastudio memory leak. This was accomplished by dropping the oldest saved stats after hitting a size limit (1 GB).
2. Changed StopOnEnd to StopOnFrame. This expands the functionality so that you can tell the emulator to run and then stop at a predetermined point.
3. Expanded the functionality of RewindToFrame to handle more cases. Now you can go back or even forward to a frame and it handles the execution and greenzone appropriately.
4. Due to the change in structure some code was changed to check the index of the first and last saved states in the greenzone rather than relying on the size of the saved state list.
5. Changed the list of saved states in the movie log from a list of byte[] to a list of structures (the structure has an int for the index and byte[] for the state).
6. Saved an init state in the movie log. This is used to go back to the beginning if the beginning of the movie is no longer in the list of saved states.
7. Expanded the AddState and SetFrameAt logic in the movie log to account for the fact that the size of the saved state list is now capped.
8. Fixed a bug in the log interpretation for SMS.
9. Fixed a bug in the sms virtual controller, buttons 1 and 2 were hooked to the wrong objects.
10. Fixed the tastudio listview to show lag as pink.
2012-06-18 01:36:38 +00:00
brandman211 646a6c1c58 -Fixed my GetMnemonic crash fix. It's "Null Controller", not "NULL Controller".
-Made it so that each new search zeroes out the change count.
--This prevents all non-zero items from starting out with 1 change.
--A similar fix needs to be applied to Ram Watch (Filing issue...).
-Allowed changing data size, endian, and unaligned address setting in the middle of the search and maintaining valid values, fixing Issue 72 (The last open Ram Search issue until my "Difference" idea is hopefully accepted).
--Unlike my previous model, this does not align unaligned addresses; all it does is change the size / endian and PeekAddress.
--It does remove unaligned addresses, however, if you have it set to.
--This version converts System Bus instantly whereas the previous version stopped responding.
2012-06-10 04:32:25 +00:00
brandman211 f716caeae5 Temporary fix for the ROM loading crash issue. Will report if it crashes again. 2012-06-09 02:24:19 +00:00
phillip.grimsrud cb4c45eb70 1. Upgraded insert and delete functions in tastudio to support multiple selection.
2. Fixed issues with the light blue current frame pointer in tastudio
3. Removed a totally useless index that was being kept seperately in the movie log.
4. Moved the tastudio update after the check to see if the rest of the saved state list is valid.
5. Changed some function/variable names related to the movie log for clarity.
2012-06-07 04:47:54 +00:00
phillip.grimsrud c7db5fd543 1. Fixed an issue that prevented going into the movie finished state properly.
2. Relegated a memory leak to tastudio.
2012-06-03 04:04:13 +00:00
phillip.grimsrud d6479e5613 These changes are TAStudio related.
1. Added a list of save states to the movie log.
2. Added corresponding support functions for the save states.
3. Added double click to the list view to load a previous frame.
4. Added a context menu to the list view with insert and delete.
5. Fixed some issues with the green zone of valid state history.
6. Fixed an input bug that I had unwittingly created, as well as issues with the nes log format.
2012-06-01 05:49:26 +00:00
adelikat 820875fbae Multiclient menu - disable the movie, avi, and screen shot menus when no ROM is loaded 2012-05-31 01:13:25 +00:00
phillip.grimsrud fc0ec832ae These changes are for TAStudio upgrades. If I've broken other stuff please yell at me.
1. Hooked up Fast Forward, Fast Forward to End
2. Made a placeholder for Turbo Fast Forward.
3. Fixed rewind to not stomp on the previous frame with new input.
4. Fixed rewind to stop at the beginning of the movie instead of freaking out.
5. TAStudio now shows data from the most recent frame.
6. CommitFrame is called even if not recording so played back frames also show up in TAStudio.
7. Play mode only stops at the end of the movie if you tell it to. Your emulator normally continues to play with no input after the end of the movie.
8. TAStudio is now updated after a rewind (even though the rewind doesn't play a new frame).
9. Split the tools update into before and after updates.
10. Going into read-only mode adjusts the movie mode.
11. Implemented New, Open, Save, and Save As for TAStudio.
12. Fixed an issue where frames past the end of the log would default to the input from the last frame of the log.
13. Fixed a problem where you couldn't rewind to frame 0.
14. Fixed a scrolling issue in the TAStudio list view.
15. Fixed an issue with the TAStudio virtual NES controller not matching up with the log.
16. Fixed an issue where the NES reset button would get held in when rewinding.
17. Added/Modified a couple of button graphics.
2012-05-28 00:44:27 +00:00
adelikat 75b5ec9223 redo revision 2168, this method also fixes the issue of loading a non-movie state while a movie is loaded, but also doesn't break the parsing of the savestate frame value in CheckTimeLines 2012-04-22 13:38:12 +00:00
andres.delikat 48f65ac847 Movie subtitles - implement ability to display multiple subtitles at once 2012-04-16 20:00:11 +00:00
adelikat 3bae8da0b6 Adjustment to height settings of osd messages, code clean up in movie.cs 2012-04-16 12:17:25 +00:00
zeromus 35fbe354c1 add threaded display manager to allow heavy OSD/compositing/filtering to happen on another thread. add a lua layer accessible via GDI+ which can be automatically composited and the simplest possible demo of it. add some filtering infrastructure and a hq2x filter set ported to c# but need to work on a minimal selector gui before its usable. separate OSD from RenderPanel so that gdi+ presentation mode now gets full OSD support. the OSD is now a little uglier because its drawn entirely differently and could use some finetuning 2012-04-16 08:18:41 +00:00
adelikat 0aa08984ed Add SHA1 to movie headers, Play Movie - highlight sha1 in red when there is a SHA1 mismtach between the movie and the current game. 2012-04-15 03:02:07 +00:00
rolanmen1 fd6a1a88da Emulator Won't Crash When User Loads A State That Is Not Embedded To A Movie 2012-04-05 01:42:24 +00:00
adelikat ab2e804300 Change default movie extension to .bkm 2012-03-31 00:38:39 +00:00
adelikat 2eba9e0c71 Atari - console buttons hooked up to mnemonics (input display and movie recording now work) 2012-03-30 23:42:09 +00:00
adelikat 52fd33153a Atari - fix recording and playback of atari resets 2012-03-30 03:43:25 +00:00
adelikat 8a199f0e3a Atari - fix the recording of reset 2012-03-30 03:15:36 +00:00
andres.delikat 50e357f345 Lua - start work to implement lua.get/setrerecordingcounting functions 2012-03-29 03:09:46 +00:00
zeromus e7eb6d8dcd fix input.get 2012-03-24 18:39:55 +00:00
brandman211 45430c8ca7 ImportMCM now supports NES movies.
-No info on the control bytes, so I'm not dealing with them right now.
-It seems like there's an extra byte for at the beginning of input for NES that doesn't exist for PCE.
--I think it might be the "1 byte for power-on and reset" that the docs refer to, though I'm not sure why this would exist for NES and not PCE...because NES supports control commands and PCE doesn't?
--Perhaps this will become more apparent if I write the importers for SMS, GG, GB, and GBA. I'll need access to a Linux machine to do these, though.
2012-03-15 04:22:37 +00:00
brandman211 172115dcca Reformatted ImportMCM. Now to add the additional consoles. 2012-03-15 02:23:01 +00:00
brandman211 4c47676c02 -Added warning messages for:
--FDS commands in ImportFMV.
--Bad ROM checksums in ImportText. TaoTao: There's nothing wrong with using warningMsg; it just is limited to showing the first warning message that occurs.
-ImportNMV
--Nintendulator's Four Score recording is seemingly broken.

TODO: ImportMCM clean-up / expansion, Intellivision research.
2012-03-14 20:08:00 +00:00
brandman211 f53088c7be -Used masks to simplify ImportFMV.
-Finished ImportVMV:
--I'm not sure what the following comment means: "For the other control bytes, if a key from 1P to 4P (whichever one) is entirely ON, the following 4 bytes becomes the controller data." I'm going to assume this is a bad translation that is the equivalent of my 4 controllers = 4 bytes comment.
--Nesmock has a block of code that seems to handle, or at least account for, commands (Lines 207 - 239 of virtuanes.hh). I don't do anything about this, but it doesn't seem like Nesmock does much of anything about it either. I'll ignore this for now.

TODO: ImportNMV, clean up ImportMCM, and perhaps support other platforms for .MCM, although everyone thinks it's a waste...I like writing importers! I'm afraid of writing cores!
2012-03-13 02:37:59 +00:00
brandman211 8938290e36 -Fixed FourScore handling for .FCM.
-Made it so that .tas is appended to the file path instead of changing the extension to it.
-Added default emu/MovieOrigin comments to the importers that don't have explicit ones.
-ImportVMV header / added blank frames
-Moved the MnemonicsGenerator declarations outside of the loops.

TODO: Finish ImportVMV (I don't think the provided documentation explains how the input works...) and figure out if my re-record count is off by one or if TASVideos.org is.
2012-03-12 20:35:10 +00:00
brandman211 05f73ab436 Made it so that the Reset flag gets reset (Hehe) every frame, regardless of whether a warning message has been hit already or not. This fixes the ImportFM2 and ImportFCM functions that were broken in the last commit. Thanks TaoTao! 2012-03-11 13:27:11 +00:00
taotao54321 f117e4fce8 ImportMCM() bugfix 2012-03-11 13:21:16 +00:00
brandman211 79944b2d26 -Applied micro500's flag ANDing syntax to all of my functions...I concede that this is a much simpler way to do this.
-Fixed ImportFMV's movie title; before, I mistook it for the game name.
-Made "comment" and "SyncHack" constants.
-Moved the "ControllerDefinition"s outside of all of the loops.
-ImportGMV:
--Emulation Version => Movie Version.
--Added the PAL header.
--Made it so that the 6-button error is a warning; considering that the code already properly handles the controller properly and all that needs to be done is have Bizhawk actually support that kind of input, I don't feel there's a reason to go so far as to kill the conversion in this case.
--Reformatting.
---Notably, I added a player loop to simplify the frame data.
--It seems that 1937M uses a 6-button recording and 1731M has 2-player input...bizarre. Anyway, this means that ImportGMV should be good now.

TODO: ImportVMV, ImportNMV, ImportMCM, ImportSMV, Atari core? :)
2012-03-11 12:24:56 +00:00
brandman211 be60ee206a -More tweaking of ImportGMV.
-Fixed InputAdapters with regards to the Genesis 3-Button Controller. It previously did not have a flag placeholder.

Potential issues that I don't have the time to investigate right now:
-When importing 1937M, I get the error "6 button controllers are not supported." Is this a false positive?
-The result of importing 1731M seems sane, but has 2-player input. This run is classified as "One player in a multiplayer game". Is this input normal?
2012-03-09 15:30:09 +00:00
taotao54321 888ce23bee ImportText(): interpret "romChecksum" entry in FM2 2012-03-09 13:26:06 +00:00
taotao54321 dae469543e ImportMCM(): forgot to close input stream 2012-03-09 12:18:16 +00:00
taotao54321 adceb81e91 ImportFCM(): emits "Platform" entry 2012-03-09 11:49:43 +00:00
taotao54321 363fa25200 ImportFCM(): fixed to interpret reset commands correctly.
It emited an incorrect result for "Zanac (U)" movie (734M).
Control update bytes are not toggle-form, unlike controller update bytes.
2012-03-09 11:38:29 +00:00
taotao54321 869f900d11 MovieImport: modified EMULATIONORIGIN value to "emuOrigin" from "emuVersion".
On previous versions, converted files had two "emuVersion" entries. That seems not right.
2012-03-09 09:30:33 +00:00
taotao54321 da9c95c38e Implemented ImportMCM() 2012-03-09 09:24:47 +00:00
brandman211 28e621527c Cleaned up my baby while respecting micro500's style choices. 2012-03-07 02:48:19 +00:00
brandman211 e7e8402af0 -Made the GUID for ImportVBM uniform with the other cases.
--Because there are way more bytes used to represent the other GUIDs than this one, I just appended -0000-0000-0000-000000000000 to this per zeromus' request.
-Got rid of the hex part of the BytesToString function. We apparently have BizHawk.Util.BytesToHexString.
-Converted BytesToString to r.ReadStringFixedAscii, an extension method. I've determined that extension methods are cool and that I should use them more often.
2012-03-06 05:27:50 +00:00
brandman211 c9b5f9989a -Added EMULATIONORIGIN and MOVIEORIGIN as constants ImportMovie instead of using magic strings.
-Fixed some error and warning messages:
--Made it so that the first .FCM warning is shown instead of the last.
--Added an error for .FCM files that aren't version 2.
--Did the same for ImportVBM, but with version 1.
-Cleaned up comments / code throughout.
-Fixed the file format for GBx; it had an extra bar which made reading Player 1 impossible.
-Seemingly finished ImportVBM.
--The results seem same. I have no way of testing whether they sync up or not.
--As I can't actually handle additional controllers, I just skip the bytes for them.
--As I can't actually handle the miscellaneous buttons and commands (Ex. L, R, Reset), I just give warnings whenever they come up in the file.

TODO: ImportGMV, ImportVMV, ImportNMV, and maybe ImportSMV...I'm going to need a new assignment soon! :)
2012-03-06 03:41:11 +00:00
pjgat09 e3ba08fefd Implemented the GMV importer. An error is returned for 6 button controllers, and third player input is currently thrown away. 2012-03-05 22:45:52 +00:00
brandman211 2c95e08392 ImportFCM fixed. All I did wrong was do the update before the delta bytes instead of the other way around. Thanks adelikat for telling me about QuickHex, who's documentation solved this instantly! 2012-03-05 17:36:52 +00:00
brandman211 89c6483e10 Worked on ImportFCM a little bit. I think I understand the delta bytes now and are handling them correctly. However, although this might press the right buttons, it does it at the wrong time and with the wrong duration. I'll need to investigate this further. 2012-03-05 17:20:30 +00:00
brandman211 d12590497e -Fixed the value to & with the update to determine the difference between a Control and Controller.
-Set the buttons to the opposite state when they are updated.
--Presumably, this is how this works.
-Read the delta bytes.

TODO: Figure out where in the world the writing of frames actually comes into play. Bisqwit gave me some insight on this.
2012-03-04 00:30:48 +00:00
adelikat e3b3879954 FIxed Get/Set mneomnics to not break on null emulator, refactored the drag and drop for movies to allow the user to continue if they decline to open a rom from the open rom pop up 2012-03-03 18:24:34 +00:00
adelikat 3bfe716952 Fix drag and drop importing so it doesn't crash during null emulator. Also fixed the movie sram clearing function to not crash on null emulator. 2012-03-03 18:11:07 +00:00
brandman211 b07fa3b7c2 -Fixed the value to & with the update to determine the difference between a Control and Controller.
-Set the buttons to the opposite state when they are updated.
--Presumably, this is how this works.
-Read the delta bytes.

TODO: Figure out where in the world the writing of frames actually comes into play.
2012-03-02 15:59:34 +00:00
brandman211 bedbf1d5e1 -.Close()'d everything.
-Added a FourScore header and applied it to ImportFile and ImportFCM.
--Not sure if there's any equivalent header for FMV/FCM.
-Seemingly have the update bytes being read properly.

TODO: Make ImportFCM actually utilize the update bytes to write frames.
2012-03-02 04:15:15 +00:00
brandman211 39246b2ca5 -Added the beginning of ImportNMV and ImportVMV.
-Added PAL handling to ImportText.
-Finished the header and metadata of ImportFCM.

TODO:
-Input handling for ImportFCM.
-Find out what the format for the FDS data is on FMV, as it occurs to me that I already handle FDS data in ImportText by giving warnings, so I might as well do the same thing in this case.
-Figure out whether or not I should be using "using" for the BinaryReader objects, as it seems like they do in fact have .Close() methods.
2012-03-01 09:16:14 +00:00
brandman211 a60698c03e Finished enough of ImportFMV for now.
-There's "FDS data" stored in the frames of FDS recording. I have no idea how to handle this. If we do in fact support these features, they should be utilized in the TODO section provided.
-99M syncs with this...isn't this a problem? Wouldn't this imply that bizhawk is as inaccurate as Famtasia? I'm pretty sure this run didn't sync when I tried it on my now broken NESBot.

TODO: I guess I'll try to move on to ImportFCM now. Although I heard this is a difficult format to work with, my favorite console is the NES, and this'd be useful for console verification if the NESBot Lua script gets adapted for bizhawk, so I think I'll give it a shot.
2012-02-29 04:47:30 +00:00
brandman211 c4029509fc -Made ImportMMV more functional.
-Seemingly programmed the header handling for ImportFMV correctly.

TODO:
-ImportFMV frame data handling.
2012-02-28 23:11:19 +00:00
brandman211 0b69b4c17c -Ported the documentation for .MMV to ImportMMV in the form of comments. I think this makes things a lot simpler, and adding these comments before coding might be a good approach for future importers. That way, I merely need to understand what needs to be done and fill in the blanks.
-Added RemoveNull to get rid of the null characters in the author and game names for .MMV.
-Formatted the MD5 for .MMV.

TODO:
-Write ImportFMV. I think I understand how these formats work well enough to try this now.
2012-02-28 10:59:16 +00:00
brandman211 97d92887b6 -Refactored some of the stuff that I wrote for ImportText.
-Realized that the the ImportMMV function probably still works, but that Grunt's Sonic run merely desyncs. If I move the second pause button one frame later, it will make it past the title screen.

TODO: Comment / clean / and understand ImportMMV before moving on to ImportFMV.
2012-02-27 18:52:08 +00:00
brandman211 f2a60888ce -Commented / refactored code.
-Fixed the Platform for PCE.
-Added emuOrigin and MovieOrigin to store the original emulation and movie versions in a comment.
2012-02-25 03:04:22 +00:00
brandman211 e40ca4c18d -ImportFile now has access to errorMsg, which will show a message box and not play the movie when assigned, and warningMsg, which will simply add a message to RenderPanel and move on as usual.
-Made it so that any of the exceptions thrown from the Import* functions get converted into a string and stored in errorMsg. Now I can investigate what's wrong with ImportFCM.
2012-02-24 07:48:06 +00:00
brandman211 5aaa5ccda1 -Set up the ImportFMV function to build my importer off of.
-Realized that there's already a function that decides which SMV function to import with (ImportSMV, duh), so now that's used for it. Outputs a movie with messed up headers except for the Re-record count, which works fine.
-Added format URLs for all of the movie formats except for SMV 1.52, which doesn't seem to have a documentation page yet.
2012-02-24 05:18:59 +00:00
brandman211 91ea63c09e -Made the errorMsg in ImportFile display.
--Moved the command message in ImportText to this.
-Converted ImportVBM to use a MnemonicsGenerator.
--This should work, but I can't test as I still don't know for sure as the import fails and displays "Not a valid VBM platform type."
--I iterated through the buttons using a list and left-shifting. I applied this method to ConvertMMV, which works.

TODO:
-Comment MovieImport.cs.
-Fix the exception that is thrown for Gameboy games.
-Get ImportVBM to actually work, scanning through the input to see if it seems sane.
-Figure out why pressing Pause on GameGear results in a "P" instead of a "p", and whether or not this is a factor in runs syncing.
2012-02-24 04:44:40 +00:00
brandman211 a92865a13d -Removed the redundancy from TI-83 as well. The whole revamping is a net loss of 292 lines of code.
--Note that I don't think that the calculator pad simulator is registering when I click 0, and that this doesn't seem to be related to any changes I made.
2012-02-21 00:40:44 +00:00
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
andres.delikat a228e05f38 Lots of little fixups to movie code, disable Disable Message config in Message Config as I won't be implmenting that before release 2011-07-13 01:29:13 +00:00
andres.delikat 4c5b48fd7c Hacky fix for loading PCE movies that are less than 5 players. It will read 1-4, but will output 5 once the movie is saved again by the emulator. At some point we should probably support < 5 players for saving to disk, given that 4 players worth of text is a drain. 2011-07-13 00:18:47 +00:00
andres.delikat 93fcd7d94f Edit Comments/Subtitles dialogs - limit max height of auto-height adjustment 2011-07-10 18:36:10 +00:00
zeromus 2425b3c87a fix some input things 2011-07-10 06:24:04 +00:00
zeromus 4991b95def refine input stuff 2011-07-10 02:14:58 +00:00
andres.delikat 29510ddd58 Fix saving of header data from record movie dialog, small fix for inputlog header data 2011-07-06 01:53:15 +00:00
andres.delikat 945577dadd Movie code clean up - document PreLoadText(), put movie truncation in LoadLogFromSavestateText() since it was rudely removed from what is now CommitFrame() 2011-07-05 23:33:13 +00:00
andres.delikat 68d0ff94eb Refactor movie writing code. MovieHeader, MovieLog, and SubtitleList all have their own write methods now instead of the Movie object doing all of the work. Conceptually these 3 objects should be autonomous and the Movie object is simply an object that manages a collection of these objects. 2011-07-05 23:16:54 +00:00
andres.delikat fed74b17b2 Subtitle editor touchups - Make color cells the color they are representing, display color in hex, put try/catches + error messages if trying to parse erroneous data, tooltips for columns 2011-07-04 20:34:53 +00:00
andres.delikat 26569dab58 More work on subtitle maker, implmeent context menu "Add Subtitle" which will open subtitle maker and set frame to the current frame 2011-07-04 19:20:11 +00:00
andres.delikat 8d333fc04c Start subtitle maker form 2011-07-04 18:32:57 +00:00
andres.delikat 505a8baab4 Subtitles - finish parsing all parameters, make render panel use all parameters but color (for now) 2011-07-04 18:04:56 +00:00
andres.delikat 7c09ca4ae3 improvements to subtitle parsing 2011-07-04 17:01:17 +00:00
andrewjpritchard 968c07e7d3 Preliminary VBM conversion. 2011-07-04 13:54:17 +00:00
andres.delikat b6bd94242f Subtitle & Comment editors - clear out old comments & subs before saving the new list 2011-07-04 13:37:51 +00:00
andres.delikat 88f14d07d8 Fixes to comment loading/editing/saving 2011-07-04 13:31:34 +00:00