Posts for Jyzero

1 2
8 9
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
btw feel free to change the naming scheme. The only reason why I kept calling it 9abcdef was because I had still Gens Movie 10 planned with the introduction of GM2 and its features.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
Good job on the wiki. Since I can't add my comments here there are : -File header should contain something about the Gens version it was created. -Config should contain info about wich sound chip is enabled. I don't know if it's still the case but some games had to diasble some sound chips to avoid desynch. -Correction : 3 player input was avaible since Gens 9d, before Nitsuja. -Would this format work for Master System too ?
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
GMV isn't office 2007 so the the format specs I described are a little extreme for the envergure of Gens. Checksums could all be scraped since file integrity isn't an issue (except for ROM checksum). Version numbers for modules could also go away except for movie data. As you said, if Gens doesn't recognize a module name it will just ignore it. As for being Hex friendly, I think a little converter GMV->Raw could do the job.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
The initial GMV format have many flaws. The main flaws were : -Lack of space for extra features -Hard-coded limit on movie data (2 6 buttonx or 3 3 buttons) -Lenght of movie based on lenght of file By the developpmenet of Gens 9, I considered switching the format (I called it GM2). I was thinking about a modular sturcture to preserve backward compatibility (not with original GMV but with all version of GM2) without sacrificating expandibility. [FILE HEADER] -File identifier (similar to SMV, 4 bytes to itendity the file as as Gens Movie) -File Checksum -Module count (4 byte integer) Then, for each module : -Module type id (4 byte, like a string of 4 caracters) -Module index in file (Indicate where in the file the module starts) 4 byte int [MODULE HEADER] (let me explain the idea of module : every elements in the movie file is encapsuled in a module. The movie data is a module, the autor info is a module, savestate information is a module, etc.) -Module header size (4 byte int) -Module data size (4 byte int) -Module data checksum -Module minimum requirements size (4 byte int) -Module minimum requirements (4 byte identifier, one byte critera and 4 byte qualificator) (let me explain the idea of minimum requirements : it tells the emulator if it can process the module without problem. For exemple, if a movie module require Gens 212 and at least movie TEST 3, identifier 1 could be "GENS", qualificator 1 could be 212, critera 1 wocould be '=',identifier 2 could be "MOVT", qualificator 2 could be 3, ant critera 2 could be ']' . This way, the emulator will know that to play the movie properly Gens 2.12 is required and at least movie test 3 is required. Modules like Movie Author info won't have any minimum requirements. If different Gens mod authors want to add their own module, they would include a minimum requirement for their mod. Example : I create a mod of Gens with Audio commentars (let's name it Gens LOUD). I create the module "SNDC" with requirement "LOUD" ']' 1. If I play it on another version of Gens, this module will be ignored. If another author implements sound commentarys but in MP3, take unintentionaly the same module name "SNDC" but with minimum requirement "GMP3" ']' 1, the Gens LOUD version won't be confused.) Criteras : '=' is equal '-' is not equal '>' is greater than '<' is lesser than ']' is greater or equal '[' is lesser or equal 'o' is optional [MODULE DATA] Raw module data Exemples of modules : "AUTH" : Author info, include author name and author comment "ROM " : Include rom name, rom checksum, and country "CONT" : Include controller information "SYST" : Include video frequency "SCFG" : Include sound configuration "SUBT" : Subtitles : Frame, string,delay,color,etc... "SVST" : Savestates with description "SRAM" : Sram with description "MOVI" : Movie data, up to 8 players, with description and rerecord count "ZMOV" : Gziped movie data "MVBK" : Backup of the movie, In case you accidently destroyed your current file with a misplaced F5 You can have multiple modules of the same kind in a single file, meaning you can have a movie file with multiple savestates at differents points of the movies, or different versions of the movie. Want to add a custom soundtrack with audio commentary ? Want to have some parts of the movie played by default in slow motion ? Want to include a module with a webcam filming yourself playing the game ? The possibilities are infinite. While still maintaining backward compatibility, expandibility and conflict resolution. Tools would allow conversion between GMV and to a Hex Editing friendly version But that is going to be an hard job to implement, and I never found the motivation to do it. [thinking about it, a format like that could be used universally with multiple emulators, so once an author code the main library to manage this file format, only minor modifiactions would be required to adapt to different emulators]
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
So I'm just going to do my real run now (yay!) and just pray that the sketch command works on my real run.
This is risky. I'm afraid it won't work later if you do the same sequence of events in your real run. This is strange indeed. I used the Dragon in the little sketch glitch video I posted in the other thread and it worked. Do you have a savestate at that point ?
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
The Gens+ movie code was originaly my movie code, that's why GIR look like GMV. If you make a new format, you should base it on SMV format. The original GMV is too static. I only reserved 4 bytes to add new features.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
I hope you at least try to abuse the sketch glitch. The will certainly be interesting and different to watch even if in the end it isn't faster. I hope someone will combine all FF3 material once complete and make a 'highlight' video with key and interesting sequences (with boss fights, glitchs, tricks). The opera scene is nice but I don't need to see it for the 32th time. Nor do I enjoyl Figaro Castle and Esperworld cutscenes.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
The SNES had a dedicated coprocessor for sound, 64kB of RAM for osund and a DSP for mixing 8 stereo (16 bit?) channels at 32kHz with features like sample compression, enveloppe, echo, interpolation. The GBA only has GB sound + 2 PCM channels with DMA. This mean : -All the music/sound logic must be done by CPU -Samples share the RAM with the game -All mixing to feed the PCM channels must be done by CPU, usually at lower sampling rate to leave more processing power to game logic and graphics.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
This is awesome. Great comments too. Few points: -I didn't discoever 00BE. I just explored ways to exploit it. -Desync on Ifrit for me too. -I hope you plan doing the Gogo Joker Doom on final Kefka. -I hope you're not losing a lot of time by doing dialogues frame perfect. It saves only one second per 120 dialog box. You're already losing a lot more by keeping full character name. -Didyou try to find a way to pick the hidden sprint shoes chest in Narshe ? Did you try messing with Left+Right or Up+Down ? This is the movie I wanted to make. I'm both glad and sad that I don't have to do it anymore.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
I guess that if you save at the Narshe Cave savepoint, then continue to play without saving up to level 99, then die, you will be back at the Narshe Cave with a level 99 Terra.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
Speaking of FF3, there is some discussion on SDA forums about Japanese speed runs. The current best FF6 time is 3:21. Here's a document about it : http://ultimagarden.net/report/cole_ff6_ta.txt I don't understand japanese, but from Google translation, it seems they find a way to have Terra at lvl 99 early in the game.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
What took me out of the project was : 1)The lack of time but most importantly 2)The complexity of planning FF3 isn't break into independant levels. You never know how a little action will affect your run : -The scenario order -To get or not shadow -Which magic to learn, when, and with who -Buying some items that you will use only 1 hour later without knowing how much exactly you will need (like rods, echo screens) -Managing HPs for desperation attacks -Manage EXP by running away The two big recent things : -The skip Celes entirely trick : This brings major changes to the plannification. Does it save time ? You'll only know after weeks of rerecording. -The Mimic Joker Doom strategy on Final Boss : Throw away all previous planification of WOR. Sketch glitch is now totally optionnal. I do however plan at some time to make some tools for FF3 TAS production like some kind of BisqBot for critical hits and desperation attacks. If it works (and it works) you save 15-30 minutes. But you may find yourself at the last battle in a deadlock situation where you can't get the very strict sequence of luck required.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
nitsuja wrote:
OK. Actually I had some questions: I've heard people say that using a 3-button controller setup makes desync less likely. Is this true? I've seen nothing to support that it is, but maybe it matters more for certain games? and about these lines in state.cpp:
		z80_Reset(&M_Z80);
//		main68k_reset();
//		YM2612ResetChip(0);
//		Reset_VDP();
When I comment out the first line, everything still work fine as far as I can tell. Do you know if it was necessary for something? Were the two lines in the middle already commented out, or did you disable them? When I uncomment the last line, the freezes stop happening. (My test was Ecco the Dolphin, loading lots of save states across different sound samples that were playing - each load had about a 5% chance of freezing the emulated CPU... does this happen for anyone else?) But ideally the loading code shouldn't have to reset anything except by loading directly into it, unless... maybe these subsystems can't affect gameplay? I'm not exactly sure what they do, but it seems to be sound stuff.
These lines were already commented. The first line is indeed strange. It reset the processor and later restore it's state. About YM2612ResetChip(0), this function doesn't exist. However there is a function called YM2612_Reset(). Maybe it was a typo by the author. This chip is about sound stuff. VDP is gfx stuff. Id you look at other reset functions, the functions and the order they are called are different. For example in Reset_Genesis :
	M68K_Reset(0);
	Z80_Reset();
	Reset_VDP();
	YM2612_Reset();
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
Thank you nitsuja for the modifications. I will test them as soon as I have the chance. In restrospection, I wish I never started the project so that you could have started it and made it awesome like you have done with the other emulators. As my first "modify an existing program" project, I made a lot of mistakes (and I learned from them). Do you want to take it from here ? Feel free to rewrite everything you like. I made no update to 9f so your version is now 9g or 10 or whatever number you wish. The future of Gens is unknown. Gens 3 was supposed to be an updated version of Gens+. But now the author decided to rewrite it completly. And how much time will this take ? could be forever. So I'm thinking the next thing to do would be to patch the existing Gens + with rerecording (to preserve movie compatibility) or pick up another emulator.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
Another thing to try: -Enter the South Figaro dungeon by the exit to take the Earring.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
Here are the potential problems with skipping Celes : -You miss an Earring. This will lower Sabin Aura Bolt damage and damage with rods. -You miss about 2000GP (You will need enough sometime to buy Echo Screens and smoke bombs) -The character replacing Celes is very weak, you cannot change his equipment and he can't learn magic -Kuppa will be is a forced member for a good part of WoB and almost all WoR (since we wont get alot of party members) With the previous sketch glitch strategy this would have been a big no. But with the new Gogo strategy, I think it's possible. The most troublesome battle would be Tentacles in the Figaro Castle. There's aslo another possibility : Use bug #11 to go straight the the rich man house and do the Celes introduction where you name her. This way Kuppan will change to Celes. Go back and exit town. Tunnel armor can be soloed with Thunder Rod and luck abuse. Can someone try this ?
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
I tried the Palidor/Joker Doom/Mimic strategy and it works very well.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
It's nice to have discussions about FF3 again. Here's is what I think about the points suggested : - I don't understand your final strategy for Gogo. What happens when he Mimic ? Does he mimic Joker Doom or fight ? If he's mimicing fight, that will be very long. - I totaly forgot about Gogo. Indeed, he can be used as a second Joker Doom. However, we only need one in the final dungeon. I don't see how a second one will speed up the dungeon. He could aslo a second catscratcher. - I'm not sure skipping Mog is faster. Don't forget that he'll be 5 levels higher than everyone. And if you don't get him, you'll need to have two character alone as the final party. This mean you won't be able to Vanish/Doom in the first turn of un-runable fights. -I forgot about fixed dice. Some test would need to be done to see how controllable they are. -I suggest to get charm bangle not only to get less battles but to controls random battles too by equiping/unequiping charm bangle.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
Gau could make a nice addition to the group but his randomness could also bring the anhilation of the group. Stray Cat has a 42% chance to appear at the 7th battle on the Veldt. Speakin of the Veldt, there is 12.5% chance to encounter the SewerRat*3 Vermin*2 formation on the 15th battle (it normaly appears the the Opera House). This formation can be used for the 2nd part of the sketch glitch. This way you won't need to bring Relm to floating continent. Your 3 partys are going to be : 1)Mog (at Goddess, vanish and dance Dusk Requiem (snare)) 2)Setzer +Gau (Gau to Echo screen and Setzer to Joker Doom Inferno and Poltergeist, or Smoke bomb random battles) 3)Edgar + Celes (Vanish-Doom bosses, smoke bomb random battle.) The party fighting Kefka will be : Edgar and Celes for their ability to wield Illumina Mog since he'll be the highest level Setzer or Gau. Gau with Merit Award + Illumina + Stray Cat could be very powerful, if unpredictible. (Is Merti Award+ Gengi Glove + Illumina + Illumina possible ?)
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
About battles : You can't change the next enemy formation you'll encounter by introducing delays (exception for the Floating Continent). However, you can change it by getting the battle somewhere else. As discovered by SprintGod, there are 60 possible initial settings for a battle (ATB bar , Preemptive, Back,...). However, because of the battle transition animation happening only every 4th frame, you can only get 15 differents initial battle settings. To get a different set of 15 battles, you can delay the end of the previous battle or acces the menu. For more information on battles, get the Algorithm FAQ at GameFaqs. Run away : To run away, the character must have a full ATB bar and succeed a luck test. This test will alway be sucesssful on a preemptive attack. About what's supposed to happen after my movie : -Don't get the White Cape at Returner's Hideoout. Its only good is increasing MBlock% wich isn't needed until late in a savestate run (Remember that MBlock blocks both physical and magical attacks) -It might be worth to make Banon run away in every battle if it allow another party member to level up. About Monsters : I highly suggest to the person taking up the run to get FF3ME. It gives a lot of information on Monster stat and on their battle script. About the ROM used : FF6 might have faster texts. However only FF3 US 1.0 has the sketch glitch.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
Even though I would like to continue it, I really lack the time to do it until a long time (if ever). If someone want to continue it, feel free to take my current work. I think I prefer to contribute by giving strategy and input. I will give now and then some advices. With the Sketch glitch, the run is pretty much trivial ecept for 1 thing : the 3 tiers of the final encounter (Kefke himself is easy since he's alone). The route is the same as the 5:26 run on SDA until the floating continent. Then follow the little SMV I posted for Sketch glitch. Before the going to the floating continent, you will need to perform the first part of the glitch to get Gem Boxes and Economizers (Allowing you to cast 2 spells per turn at the cost of 1 MP). To be able to glitch, you will need to have a proper magic spell configuration so that Mute is in spell slot 28 (this need to be tested). For the second part, you will need to bring Relm with you to the floating continent (since Dragon is the only Mould 7 enemy formation avalaible at this point). The second part of the glitch gives Illuminas and Paladin shields (used to get a very high MBlock %, high attack power and the possibility for everyone to learn Ultima at the same time). Don't forget to arrange your inventory to avoid overwrite. More information on sketch glitch on this page : http://masterzed.cavesofnarshe.com/GameDocs/ff3sktch.txt With the sketch glitch, you can safely skip the Fenix Cave and the Tower of Magic. However, skipping the the Fenix Cave will limit you possibilities for the final fight as : -You won't have Locke -You won't have Phenix -No Life3 Your final party will be Edgar, Celes, Setzer and Mog (You'd be crazy to skip him). You could recruit another member as an Echo Screener. I thought about 2 startegies for the final fight : 1) The safe and easy way. Get everyone to learn Ultima. Equip everyone with Gem Box + Economizer. Spam Ultima. Short battle 2)The hard way : Equip everyone with dual Illumina (Might be worth getting some Merit Award for Setzer and Mog) The fight will be long. I will post more info later
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
The server I use seems to be down at the moment. Try again later.
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
Jyzero wrote:
I'm curious to see how this idea would perform : Dump every data sent to the PPU and compress it. Then, make a video codec that emulate a PPU and process the data back
Well I tried it I modified a Gameboy emulator to dump every memory write to video ram and io (0x8000 to 0x9fff,0xfe00 to 0xfeff and 0xff40 to 0xff59). For timing, I added symbols to indicate Hsyncs and Vsyncs. For a 30 seconds game of Tennis, the raw file was 669k. Compressed, the file was 44k ! Only 44k for 30 seconds of lossless 160x144x2bit video. And further optimizations are possible to generate a better raw file. Of course this example has flaws. Tennis doesn't have much graphic activity. Game that rewrite tile data every scanline or multiplex sprites would make bigger files. Other systems wouldn't perferm as well as the Gameboy . For exemple, it would be almost impossible to have perfect Atari 2600 graphics without cycle perfect synchronisation. Although this method isn't really suited for a video codec, there are still some ideas we can take from it. You could code a video codec that try to encode the movie file as data sent to a PPU. It could guess what in the image is made of palettized tile and what is made of sprite. It could encode the image as a multi layered tilemap (with tile property that could be modified each scanline) with sprite on top of it. Then make a pseudocode to describe image (scroll tilemap 1 tile to the left, move sprite z at xy, change palette y to x, etc...)
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
I'm curious to see how this idea would perform : Dump every data sent to the PPU and compress it. Then, make a video codec that emulate a PPU and process the data back
Experienced Forum User
Joined: 4/26/2004
Posts: 213
Location: Montréal, Québec
Using a savestate overwrote the read only flag. Thanks for catching it. I will update a new version.
1 2
8 9