Posts for TaoTao

Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
feos wrote:
Hi. Can I have this translated please?
You occupied all of 14 enemy planets. But, you still haven't found the double planet Nirsartia. Without conquering it, you can never win a true victory. You have to take up a new challenge. All secrets of the double planet Nirsartia will be unlocked in level 4.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
NES Double Moon Densetsu may have an ACE vulnerability, because you can probably overwrite stack area (see "Saving/loading with illegal character id" section). In NES Aces Iron Eagle 3 (Japanese port of Ultimate Air Combat), I had experienced a sudden freeze. It happened when I was playing air-to-air combat (3-D shooter) in "CRUDE&RUDE" mission using F-14 Tomcat on FCEUX. Unfortunately I did not record a movie, so I don't know the detail of the freeze.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
Temp encode: Link to video I'm glad to see Ikari Warriors tas, and this seems well thought out. Yes vote. This run will definitely impress those who ever challenged this game without ABBA cheat.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
Wow, I like this kind of projects, like TheMexicanRunner's NesMania, or famicomall in Japan. Though it will be the hard way for TAS. Anyway, I try suggesting some games which will be challenging for TAS. * Challenger (J) (Japanese: チャレンジャー) This game has a in-game cheat. On the first stage, you usually cannot kill the boss and he escapes, but if you successfully kill the boss, you can warp to the final stage (it had been confirmed with emulator cheat). Some people claims they succeeded to do it with legitimate way, but nobody so far proved it with a movie even with tool-assist. So, it will be valuable to achieve it with TAS. A TAS video was uploaded on nicovideo. You have to hit 12 times to kill the first stage boss, but the author says he could hit only 11 times even with TAS. I had found that you can manipulate RNG with player2 input in this game. * F-1 Race (J) (Japanese: F-1 レース) I tased this game long ago (movie file is here). I think it will be very difficult to run 3 laps on the final stage without the turbo-mode cheat, even with TAS (I tried it in the movie I said, but I was 22 frames short). I had uploaded a HUD script.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
Your previous run has been one of my favorite movies. And I am glad to see a further improvement. I am surprised at the amoeba glitch. Nice work! Easy yes vote :D
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I mostly use TASEditor on FCEUX. (I have not used BizHawk for TASing so much) TASEditor keeps me away from trivial mistakes, and it helps a lot especially in laggy games. But I think its most cool feature is bookmark (branching). Even with "traditional" method, you will have to compare several "branches". So, I think TASing emulators must have built-in branching feature.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
ruadath wrote:
Nice find! I wonder if that trick has use elsewhere? In the meantime, I assume you are fine with me replacing the file and adding you as an additional author (and apparently, I have no idea how name order conventions work, so if someone could provide a suggestion, I'll go with that)
Sorry for late reply. For co-author issue, the stun-time manipulation trick is already so well-known (for example, it is explained in Japanese Wikipedia) that I think I do not contributed so much. (I think the most of value comes from your movement optimization). But please feel free to add me as a co-author if you want :) And anyway, basically I do not restrict the usage of the movies I uploaded, so please take advantage of it freely, if it helps.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
ktwo wrote:
i'm not sure I'm reading your reply correctly. It sounds interesting with addresses that somehow follow the type of item drop, but $0674 stays 0 for me in both your movies. What am I supposed to see by looking at that address?
Well, I am so bad at English that I am also not sure I told my thoughts correctly :P In short, the item drops of tanks in the beginning of area2 are determined by the object index of the tanks. If the tank has object index 2, it will drop a tank. And if the tank has object index 4, it will drop a fuel. I uploaded a movie. Let's see an example with it. While playing the movie, please look at $04FE-$0502. These addresses store the property of objects, and if its value is zero, the object does not exist. As I said, object 0 is always player1, and object 1 is always player2. This movie is in 1-player mode, so $04FF is always zero. On frame 2144, $0500 and $0501 becomes 0x42. These are the doors on sides. And on frame 2176, $0502 becomes 0xC0. This is the first enemy tank, and note that it has object index 4 ($04FE + 4 = $0502). So, it drops a fuel when I destroy it. And, on frame 2492, $0500 becomes 0, because I destroyed the left door. By this, object index 2 becomes empty and the next enemy tank will have object index 2. In fact, on frame 2536, $0500 becomes 0xC0. And it drops a tank when I destroy it. I also checked with your area3 movie. On frame 1550, $0502 becomes 0xC0 (enemy tank), and it drops a fuel. I confirmed that the routine $04:90B0 is executed here. By the way, $0674- is the array of drop-related value. $0674 corresponds to $04FE (object 0) $0675 corresponds to $04FF (object 1) $0676 corresponds to $0500 (object 2) ...etc. When a enemy tank drop a tank, you will see that $0676 becomes 0x20 for a while.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I put some memory addresses:
# RAM
# ---

$3D     U8      $2000 mirror
$3E     U8      $2001 mirror
$3F     U8      $2005 x mirror
$40     U8      $2005 y mirror

$41     U8      tmp variable for input reading
$42     U8      tmp variable for input reading
$43     U8      P1 input        # ABSTUDLR
$44     U8      P1 input modified       # suppress continuous A
$45     U8      P2 input
$46     U8      P2 input modified

$6A     U8      current sprite buffer page      # 2..3

$E4     U8      P1 life
$E5     U8      P2 life

$0200-$02FF     Sprite[64]      sprite buffer 1
$0300-$03FF     Sprite[64]      sprite buffer 2

# In object list, index 0 means player1, index 1 means player2.
# Object position seems to be signed 24-bit (lower 8-bit is subpixel).
# Calculation of y-position is weird a bit (see $DD02).

$04FE-  U8[]    object type etc?        # 0:not-exist

$0576-  U8[]    object position x mid

$0594-  U8[]    object position y lo    # subpx

$05B0-  U8[]    object position y mid

$05CC-  U8[]    object position y hi

$05E8-  U8[]    object position x lo    # subpx

$0604-  U8[]    object position x hi

$063C-  U8[]    object direction        # 0..15

$0674-  U8[]    object drop-related value

$067F   U8      P1 ammo of gun
$0680   U8      P2 ammo of gun
$0681   U8      P1 ammo of grenade
$0682   U8      P2 ammo of grenade


# ROM
# ---

$C271   code    read inputs

$D97E   code    check if object list is full?

$DC9E   code    calculate object velocity?

$DD02   code    move object

$DDF9   code    multiplication (S24 * U8 -> S24)
And, I uploaded a CDL file (Unknown ratio: 8.45%).
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I found the code determining the item drop I mentioned. The routine is $04:90B0. I paste the code:
 04:90B0:9D 3A 05  STA $053A,X
 04:90B3:20 67 DD  JSR $DD67
 04:90B6:90 03     BCC $90BB
 04:90B8:4C A6 88  JMP $88A6
 04:90BB:20 22 E0  JSR $E022
 04:90BE:20 E4 DF  JSR $DFE4
 04:90C1:F0 1A     BEQ $90DD
 04:90C3:A9 00     LDA #$00
 04:90C5:9D 74 06  STA $0674,X
 04:90C8:E0 02     CPX #$02
 04:90CA:D0 05     BNE $90D1
 04:90CC:A9 20     LDA #$20
 04:90CE:9D 74 06  STA $0674,X
 04:90D1:E0 04     CPX #$04
 04:90D3:D0 05     BNE $90DA
 04:90D5:A9 14     LDA #$14
 04:90D7:9D 74 06  STA $0674,X
 04:90DA:4C 68 89  JMP $8968
X is the index in the object list, and $0674[X] is a drop-related value of the object. As you can see, this routine sets $0674[X] based on the index of objects. If the object index is 2, a tank will be dropped. If the object index is 4, a fuel will be dropped. You can confirm this with my movies, by freezing the value of $0674- or deleting objects (set $04FE- to 0). Since $0674- are modified also in other places, other item drops might be determined by other routines. But at least this will be a clue.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I do not know the detailed mechanism of item drop, but I remember that you can manipulate a tank drop in the beginning of area 2. If you destroy the first enemy tank and the left house door, the next enemy tank will drop a tank. On the other hand, if you destroy only the first enemy tank, the next enemy tank will drop nothing. (I know this from famicomall wiki (Japanese)) Here are the movies: tank drop no drop I have almost not read the game code, because it is painful to read Micronics' program. But I might try it if I feel like it.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
fsvgm777 wrote:
Perhaps you could add X acceleration ($35) and Y acceleration ($37) (signed ints). These are currently missing from your list (and are present in addresses list I've made and put in my OP).
As far as I looked, $35 is subpixel of x-velocity, and $37 is subpixel of y-velocity (so I wrote the type as "S16BE", signed 16bit big endian). And, $3C is subpixel of x-position, and $3F is subpixel of y-position. I examined about the cheat which I mentioned before. Apparently it is a cut content or debug mode. There are unused code on $C301:
C2FB : A5 67       lda $67              ;
C2FD : D0 38       bne $C337            ;
C2FF : F0 2B       beq $C32C            ;
; --- unused code begin ---
C301 : A5 08       lda input1           ;
C303 : 29 C0       and #$C0             ;
C305 : C9 C0       cmp #$C0             ;
C307 : D0 23       bne $C32C            ;
C309 : A9 01       lda #$01             ;
C30B : 8D 7F 01    sta $017F            ;
C30E : 20 63 C6    jsr L_C663           ;
C311 : 20 FB D6    jsr L_D6FB           ;
C314 : A9 00       lda #$00             ;
C316 : 85 4D       sta $4D              ;
C318 : A5 0C       lda input2           ;
C31A : 29 80       and #$80             ;
C31C : C9 80       cmp #$80             ;
C31E : D0 1E       bne $C33E            ;
C320 : A9 00       lda #$00             ;
C322 : 8D 7F 01    sta $017F            ;
C325 : A9 01       lda #$01             ;
C327 : 8D 5F 01    sta $015F            ;
C32A : D0 12       bne $C33E            ;
; --- unused code end ---
You can activate this unused code by replacing $C2FF-$C300 with NOP (0xEA). With this code activated, you can use a stage select function (press P1 A+B when you select "normal start"): And, you can edit NES RAM with P2 input: And, if you press P2 A button when you exit the stage selection, you can become invulnerable while you are pressing P2 A button.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I did not review this movie thoroughly, but I found a improvement by 21 frames. In stage 51, you can decrease stun time ($02C7) by pressing A.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I put some memory addresses:
$08     U8      P1 input        # ABSTUDLR
$09     U8      P1 input on -1F
$0A     U8      P1 input on -2F
$0B     U8      P1 new input
$0C     U8      P2 input
$0D     U8      P2 input on -1F
$0E     U8      P2 input on -2F
$0F     U8      P2 new input

$10     U8      frame counter

$12     U8      $2005 x mirror

$14     U8      $2005 y mirror

$1A     U8      $2000 mirror

$34     S16BE   velocity x
$36     S16BE   velocity y

$3A     U24BE   position x
$3D     U24BE   position y

$40-$45 U8[6]   mapper 206 internal register 0-5 mirror

$51     U8      death flag
$52     U8      life
$53     U8      key
$54     U8      clear flag

$56     U8      wing

$58     U8      $2001 mirror

$59     U8      bit7:barrier

$5B     U8      wind

$5E     U8      timestop counter

$5F     U8      time (sec)

$64     U8      time (frame)

$69     U8      poison
$6A     U8      candle
$6B     U8      ring
$6C     U8      silence
$6D     U8      sleep
$6E     U8      bit0:cross, bit1:orb

$80-     U8[]      BG drawing data

$0144   U8      stage

$0148-$014F     U8[8]   score

$02C7   U8      stun counter

$0700-$07FF     Sprite[64]      sprite buffer
And, I wrote a HUD script to display position and velocity. You can increase/decrease the stun counter by pressing B/A. I am reading the game code, and I found that this game uses 2P input for a cheat. When you set $015F to nonzero, you will become invulnerable while you are pressing P2 A button. Though I have not found the canonical way to activate the cheat.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
fsvgm777 wrote:
I asked Mothrayas about the issue regarding the bonus floors some time ago, and he basically said that if I were to show off the bonus floors, I should make a full warpless run, since save-anchored movies aren't accepted per the Vault rules.(emphasis mine) So...I'd advise against it.
I am just afraid that the stage 1-60 are so easy that a warpless run would be boring. But if a warpless run is preferable, I will consider it. Ah, anyway, you can use a softreset to skip the ending and go straight to the special stages. I think there is no problem to use softresets.
fsvgm777 wrote:
a WIP that completes the first 20 floors: User movie #37191664124536687
Thank you for sharing the wip! It will be definitely useful for comparison.
fsvgm777 wrote:
Oh, by the way, I consider the special stages as, well, special stages that you can reach after "completing" Floor 60 (which really is just a glorified cutscene) and thus technically beating the regular game.
Yeah, I think there is no problem that we have normal stage runs and special stage runs in parallel. For reference, I put some videos I found so far: * hisatoki's TAS (special stages, using warps until stage 60, not using reset to skip ending) * nico's RTA (special stages, using warps until stage 60, using reset to skip ending) * A romhack demo, "Genkai no Bouken" (insane difficulty)
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I tried converting fsvgm777's current run into FM2, and it synced on FCEUX 2.2.3. So I put the fm2 for some convenience. I am considering make a special stage run, using warps until the stage 60. Because some people (including me) consider the special stages as main contents of this game, and the stage 1-60 as tutorials.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
NESexpert wrote:
STAGE1 canbe improve 52F kill BOSS. i am chinese too YOUR movie when time 001 is 3544F, my movie when time 001 is 3492 http://imgsrc.baidu.com/forum/pic/item/92e36e81800a19d849fefe5b3afa828ba71e464f.jpg
I could not download your image directly, but I could view the image by pasting your URL to imgur.com: Btw, I'm Japanese :P Anyway, nice thing. If you post your movie file to the game thread, it will definitely be helpful for future improvement.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I found one more wallzipping in 9-2, and improved by 106 frames. Movie file: http://tasvideos.org/userfiles/info/35984389848965563 Sorry to trouble you, but would you replace the movie?
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
Game: Vice: Project Doom Console: NES Author: TaoTao Progress: until 6-1-1 Thread: http://tasvideos.org/forum/viewtopic.php?t=1093 Movie: http://tasvideos.org/userfiles/info/35773886529663191 Link to video
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I finished 5-3, and saved 535 frames from the current run in total. Link to video 5-1-1 (-58f) I used the wallzipping twice. But I had trouble managing lags. 5-1-2 (-147f) I took a shortcut with high-jump, though logs do not work as expected. 5-2-1 (-34f) Mainly lag reduction. Sometimes you had better not kill enemies. When the screen is filled with enemies, some succeeding enemies do not appear. Lag management is getting harder, so I will not stick to strict optimization. 5-2-2 (-28f) Mainly lag reduction. 5-3 (-103f) You can deal 3 damage with a high-jump.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
XYZ wrote:
Are you tried in 4-1 used purple enemy with nunchucks to reach high platform?
Yes, and I also tried using a dog under the platform. But they did not contribute to save time. They are almost equal with my route, but a little slow according to my test. EDIT(2016-12-18): I also tried using a bullet shot by an enemy in front of the platform, but I could not reach the platform.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
XYZ wrote:
Ducking running rejected?
I still have not found the advantage of ducking. If I get stuck somewhere, I may try it.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
XYZ wrote:
4-1 looks laggy. Is it right? Or just action movie viewer's opinion?
Yeah it is right. 4-1 produced 98 visible lag frames (and sometimes invisible lag frames occur).
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I finished 4-2 and saved 165 frames from the current run. I examined 5-1-2 a little, and found that you can take a shortcut with high-jump. But, as Sonikkustar said, logs do not work as expected, so I might not achieve so large improvement as I thought.
Experienced Forum User, Published Author, Experienced player (870)
Joined: 9/18/2008
Posts: 148
Location: Japan
I had watched hisatoki's movie of (J) version, though I do not know the difference between (U) and (J)... Link to video