Posts for TaoTao

Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
despoa wrote:
Is it possible to pull this glitch off on NESHawk? I think that is supposed to be cycle-accurate.
It is possible to perform this glitch on NESHawk. But this is a very slow case (message speed value is 0x5F). For now, I haven't found a fast case (like this movie) on NESHawk. On FCEUX, in fast cases, the game tends to read the PPU register area (including mirror) as data. And NesHawk might behave differently in such cases.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
Bigbass, thank you for the verification!
Bigbass wrote:
At approx 1:28 (of the encode video), on the 2nd green tile after exiting the city, I get an encounter with some kind of red blob (lol idk what the enemies are in this game). After fighting for a few moments, it exits the battle, moves around a bit, and then encounters a blue blob. The location of the encounters and seemingly the battles themselves, all appear to be consistent between attempts.
They are probably Red Slime and Slime in the NES version. This game updates the RNG every frame. Additionally, you can pause the game to manipulate the RNG. While the game is paused, the game polls inputs and updates the RNG in a loop. So, an emulator will need cycle-wise accuracy to emulate this game exactly.
Bigbass wrote:
I do not have the equipment necessary to initialize Work RAM; although given the consistency of the desyncs, I feel it's unlikely that initializing RAM would help (unless this is one of the rare cases where the Everdrive menu happens to consistently set values that the game depends on for RNG). In the past, I've tried and failed to verify the existing publication of this game, too. Perhaps it could be something on my end, some quirk that my device doesn't handle, honestly I don't know.
I think this game does not depend on an uninitialized RAM state. On startup, this game initializes only zeropage and OAM buffer page, but the rest of the memory is almost temporary buffers. If this movie is not verifiable even before the glitch is performed, it will be out of question to verify the glitch itself. So, if nobody can verify this movie, maybe it should be rejected, but I put this into the hands of a judge.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
ruadath wrote:
Maybe try on NESHawk? If the run syncs on two emulators that is probably a good sign, but idk
Yeah I'll try to resync my movies on NESHawk. (but I think it will be not so easy, because movies of this game desync even on different FCEUX versions) And I found a bit faster solution (about 6m16s). EDIT: I put the encode: Link to video
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I made a movie which beats the game (from newgame) in about 7 minutes using Stones of Sunlight glitch. But I'm not sure if this movie syncs on a real console. Because, in this movie, the game reads PPU writeonly registers as script commands. According to NesDev Wiki:
Reading a nominally "write-only" register returns the latch's current value, as do the unused bits of PPUSTATUS. This value begins to decay after a frame or so, faster once the PPU has warmed up, and it is likely that values with alternating bit patterns (such as $55 or $AA) will decay faster.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
Thank you for the comparison, feos. I only assigned the separate branch just because I'm not sure about the rules, but I don't particularly stick to it. If the branch is not needed, please remove it.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
feos, Thank you for replacing the movie. I modified the submission text according to the movie replacement.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
feos wrote:
Thanks for all the help, ViGadeomes! All 3 movies have value. The GB version is the original most basic one, GBC has the shortest gameplay, and GBA is console verifiable.
ModeStartupGameplayOverall
GB62810491686
GBC48010181507
GBA49410651568
I personally lean towards preferring the console verification aspect. EDIT: If we're going to replace the movie with either resync, ViGadeomes's name may make sense to add to authors, due to research and work he contributed to this project. TaoTao, what do you think?
I reconsidered about the three platform options, and I think the GBA version is the best. Because it adds the most essential value (console-verifiability). If there is no problem, please replace my movie with the GBA version. And, I agree that ViGadeomes should be added to the author list. If the movie is replaced, I will modify the submission text according to it.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I improved 2-1-C by about 25 frames. I used the new wallzip once. And for some reason, an enemy does not appear at the last screen. In this game, generally, some enemies occasionally disappear for unknown reasons.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I improved driving stages. Here are the WIPs: * 1-1 (improved about 68 frames) * 10-1 (improved about 19 frames) In 1-1, I used a better boss fighting strategy. This is thanks to NESexpert's advice. But I'm not sure why this strategy saves time. Anyway, the game seems to start converting time to score earlier. EDIT: I understand the reason. When you take a damage just before you beat a boss, scrolling slows down and finishes earlier. I also want to apply this strategy to 10-1, but I don't know it is possible. Because the hitbox of the 10-1 boss is very small. EDIT (2023/02/12): I improved 1-1 by 1 frame further. (uses only backfire, and collide the boss earlier) But I had to wait a few frames to manipulate 2-2 boss, so this might not be useful.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I put a HUD script for BizHawk. This shows hitboxes, coordinates, etc. Note that this script assumes that you display all scanlines and a window size is x2.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
As you may know, a new wallzip glitch is found by Poahr. I want to improve the current publication, but I'm not sure if I can do it soon since this game is somewhat heavy. For now, I put a WIP of 5-1-A (uses the stage select cheat). This is faster than the current publication by 280 frames or so. And, I improved 1 frame in 2-1-A. (If you are planning to TAS this game, use freely my WIPs if useful. I don't care about authorship of my userfiles)
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
rat926 succeeded to beat DQ1J with Stones of Sunlight glitch. (movie file is available from the description text) Link to video Unfortunately the message speed after the glitch is very slow, but anyway this will be a great progress. I checked the movie file, and confirmed that the game does not execute any addresses other than the ROM area while the glitch was executed. Also, no unofficial opcodes were executed. So, I think there will be no emulation problems with this movie.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
Dragon Quest (J) (Famicom version) has a glitch which might lead to a drastic improvement. I call it "Stones of Sunlight glitch". (cheap uploads a demonstrating video (Japanese)) First, you can take chests unlimitedly if you fill up a "open-chest" array (address $2A, and it's capacity is 8 elements). To do so, take some chests in a dungeon and die before you exit. Then the array is not re-initialized, so you can fill up the array before you take all chests in Tantegel castle. (Note that the array always has 3 elements for the chest in the throne room in Tantegel castle) In this situation, if you take the chest which contains "Stones of Sunlight", a glitch occurs and the game displays a string "12345". It is harmless by itself. But if your inventory is full, the game corrupts the window buffer. In this situation, the game causes a significant glitch if you do an action which scrolls the message window (e.g. dropping an item to take Stones of Sunlight, or using a cursed item). In this glitch, the game reads the beginning of zeropage memory as text scripts. So, you can manipulate some bytes which is read by the game as text script bytes. For example, you can manipulate $47 (input), $4F (frame counter), or $94 (RNG state). And, the game behaves more differently if you write "script commands" on memory. (e.g. script command 0xF7, 0xFA, 0xFC, 0xFE, 0xFF...) I confirmed that the game executes some RAM addresses by this glitch. But in this game, you cannot manipulate so much RAM contents. So for now, I think it is very difficult to use this glitch to cause ACE. And, I confirmed that the game sometimes writes 0x54 at address $E4 by this glitch. This means the "beat Dragonlord" flag (bit2 of $E4) is enabled. But immediately after, the game is softlocked. (I put example movies for reference: 1, 2) If you can avoid the softlock, you will be able to get to the ending immediately. By the way, NES version doesn't have this bug. The reason for this bug is that the game fails to initialize a string buffer when the open-chest array is full, but NES version doesn't have this problem.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
ViGadeomes wrote:
The unitialized RAM states are effectively the same as on real consoles, the GB/C emulation is very very good and CasualPokePlayer confirmed me that the uninit RAM has no emulation problems when I asked him to be sure.
Thank you for the information. It is interesting to me, since I heard that the uninit RAM states of some platforms (e.g. NES) are non-deterministic on real consoles. I understand that there is no technical problem to change this run to GBC-mode.
ViGadeomes wrote:
it is actually possible on a real GBC to play this game and it doesn't seem to have any noticeable audio, video or gameplay-affecting glitches, so I think it makes it allowable in this mode. I could be wrong tho. This point is this way to let people choose the best official platform that officialy support games from other platforms to play on. Anyway, I don't feel this improvement totally fair and I can ask to not be credited as co-author even with my improvement replacement over your version if you don't accept it.
Okay, I understand that the site rules allow the platform change. I looked at the list of GB publications, and I noticed that some of them use GBA-mode for console-verification. Thus, if I change the platform, it might cause another discussion about the purpose of the platform change (to save frames? or to enable console-verification?). And, I don't have enough knowledge to answer that. So for now, I will keep this movie in GB-mode and just avoid the discussion above. However, if a judge or other people give me advice on this issue, it might change my mind. Anyway, it is a useful knowledge that the frame counter depends on an uninit RAM and that the optimal TAS solution varies for platforms. So, I will add this knowledge to the submission text. Thanks again for your review!
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
ViGadeomes wrote:
The improvement is big compared to the previous run thanks to the new strat and I wasn't able to improve the run in its current form. It makes it a solid 1679 frames improvement compared to the previous TAS (as a note the previous run doesn't press the last input to get to the "Leaving Las Vegas" screen while this one does). The very detailed explanation of how the RNG works makes it very eazy to verify which is appreciated ! I first tried to convert the movie in GBA mode to make the run console verified one day. Sadly, the TAS was desyncing due to the initial frame counter value beeing different because of the uninitialized RAM (00 in GB mode, 50 in GBA mode & 7F in GBC mode). The GBC mode was the best initial value which saved 31 frames gameplay-wise (not counting BIOS time differences) thanks to the different RNG. I also tried the $1 slot route on the 3 modes thanks to the extra informations TaoTao gave me but it wasn't worth it.
Thank you, ViGadeomes! I didn't notice that the frame counter depends on the uninitialized RAM. Nice review. I confirmed that ViGadeomes' GBC-mode movie is faster than my GB-mode movie by 31 frames gameplay-wise. But, I'm not sure whether I should replace my movie with the GBC-mode one. Are the uninitialized RAM states are the same as on real consoles? If not, it will be an issue of emulator implementations. Personally, I want to submit my movie in GB mode, because I think this game would be mainly targeted to GB platform. (This game was released in 1991) For the movie endpoint, I decided to get to the "Leaving Las Vegas" screen. Because, unlike the NES version, the game doesn't automatically proceed to it. I think I have to show all the ending contents in my movie (even if most of them are shown only for a few frames). Any thoughts?
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
ViGadeomes wrote:
Hello TaoTao, this is a very nice improvement to begin with ! Could you elaborate a little more on this point ? I can't link the reel value to the jackpot on the $1 slot machine. I was able to get a different & better starting value for the frame counter by using the GBC mode and been able to save some frames & would like to test the $1 slot machine route just to be sure. Then I'll post my Review ! Thanks in advance.
Hello ViGadeomes, thank you for your review. I uploaded a movie which gets a jackpot on the $1 slot machine. Please play it watching WRAM address $C0 (frame counter. CPU logical address is $C0C0). As you see, you have to wait until the frame counter reaches 0x6A anyway, at least on GB mode. (Actually, you have to press button when the frame counter is 0x69) And, my movie also starts to operate the $5 slot machine when the frame counter reaches 0x6A. Moreover, in my movie, the first operation of the second jackpot starts without waiting frames. Therefore, I think you cannot save any frame using the $1 slot machine. But I'm not an expert of GB/GBC hardware, so I'll wait your review.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
ShesChardcore wrote:
Thank you again for your efforts. Is it possible that a slot jackpot exists that could be solved for?
I think it may be possible. I will read the slot machine code when I have a time.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I challenged the video poker and succeeded to get a royal flush, but the prize is overflowed... 400000 mod 65536 = 6784. I have nothing to say further. For reference, I put a solver (examples/poker_royal.rs) to get a royal flush. (solution)
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
You can achieve the best ending with fewer money. I put the conditions of each endings:
EndingCondition (dec)Condition (hex)
Bus00x0
Taxi1 ..= 48630x1 ..= 0x12FF
Green car4864 ..= 117750x1300 ..= 0x2DFF
Orange car11776 ..= 655350x2E00 ..= 0xFFFF
Limousine65536 ..= 1310710x10000 ..= 0x1FFFF
Red sports car131072 ..0x20000 ..
This ending branch is processed at routine $C72B. I put some memory addresses useful for the people who want to replicate the table above:
AddressTypeDescription
$A7u8money ($100 units)
$A8u8money ($25 units)
$A9u8money ($10 units)
$AAu8money ($5 units)
$ABu8money ($1 units)
$0621u24lecalculated money (modifying this has no effect)
$077Eu8money ($25500 units)
I read some code of this game and found that it will be difficult to manipulate the RNG without a large loss. RNG routine is at $F922.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
Mihoru wrote:
Do you want a submit??
No, for now. Reasons: * Generally we should use the same version as predecessors used. JP/US versions seems to differ slightly (e.g. enemy placements). * My movie is not so heavily optimized yet. Indeed, I made it in a few days just for fun. And, for entertaining aspect, it might be worth considering to play 2nd/3rd round. This game has a cheat command to play 2nd/3rd rounds. (IIRC, you can play 3rd round by entering the cheat command after gameovering 2nd round)
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
This run is probably improvable with a "special attack". In boss-fights, if you take damage 3 times, you can use a special attack (known as "Atata-Punch" in Japan). This special attack can instakill any boss. FYI, I put a movie of Japanese version (The Kung Fu (J)): movie, encode
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
Edit: Never mind. This cheat seems to be known at least in 2014: https://cah4e3.shedevr.org.ru/cheatsbase_d.php#452 I found a new(?) cheat on Japanese version. If you die at a certain point, and escape from requiem screen holding 2-player A button, you can increment message wait value ($062C). If you started with message speed "slow", message wait value goes from 0xFF to 0, and battle messages will be displayed without wait. (movie, encode) I confirmed that (U) version also has the same cheat code (PRG $04:$9A58). I have no idea what this code intends. And I think this cheat may have some side effects, because the program often assumes that message wait value is valid.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I found another solution (1312f on FCEUX, 1308f on BizHawk). The same length as http://www.nicovideo.jp/watch/sm33611072 .
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
SubStylee wrote:
Hello, I was derusting this game and trying a few of the tas zips in TaoTao's video. For the Stage 9-2 one I am able to zip into the wall after getting boosted off the enemy, but I am not zipping out of bounds like the tas. At first I was just getting kicked out instantly until I figured out holding up+left will keep me in the wall until I get damaged again. After that the game decides to eject me out of the wall granted with more distance then if I just held down+left. I was hoping if TaoTao was still around or if anyone else that is interested could tell me what inputs are being done during this zip so I could see whether this is humanly possible to pull off. I would greatly appreciate it. Here is a vod of my best attempt at doing it so far. https://youtu.be/g-iH95-XjJg
Hello SubStylee. I tweaked the TAS movie and made a movie. It seems that you have to wait until the hero reaches high enough, pressing only Left. And, if you press Left+Down with an appropriate timing, you will be able to zip out of bounds. In this movie, you can make it by pressing Down between frame 32141 and frame 32149 (the window is 9 frames). Note: in this movie, I used a normal jump. I think high-jumps are not so feasible in RTA. By the way, I used a high-jump at this scene in the TAS movie, but I had to press Down at just one frame window. So, a normal jump might make things easier at this scene. If you want to research further, I recommend to use FCEUX built-in TAS Editor. It is a very powerful tool. And, a HUD script might help you to see internal values (subpixel, etc).
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
Yes vote. Of course, a complete run is desirable. But personally I think it is valuable to explore the fastest time on each courses in race-games, since it is generally rather difficult to optimize race-game runs. And I think this run is well done. For this game, I'm just a casual player, but I guess you made a lot of effort for this run. Because, I have sometimes read your blog (Japanese). So, this very simple submission text is regrettable. I want you to explain your effort by your submission. You will be able to write interesting contents.