Castlevania II (Simon's Quest) - Multilingual enhancement

Started by Bisqwit, December 19, 2012, 01:38:36 PM

Previous topic - Next topic

Bisqwit

Quote from: ifightdragons on July 18, 2020, 09:16:53 AMBut if adding them takes a lot of extra work, and/or might open up possibilities of new bugs and potential conflicts with existing code, I'd say it's not worth it as the value returned is, subjectively, not a lot.
None of these screenshots are mockups. By the time I post a screenshot, I have already done the work for it.

binarck

#1081
The value gained is small, but I appreciate it for being more focused. Makes it clear that the code engineer is capable of making minor improvements, and looks different from vanilla in terms of presentation.

__________________________________________________


Did some research on optimizing 'Simon_CheckMapCollision_LeftAndRight' out of interest.

The old code takes 859 cycles.
The new code takes 601 cycles.

This subroutine is usually run 2x per frame.



note: flawed. Don't use.

    03:86ED

    STY Temp94

    LDA #$B7
    PHA
    LDA #$4F
    PHA
    LDA #$01
    JMP SwitchBank_temporary  ($c187)

    LDY Temp94
    JMP Simon_CheckMapCollision  ($d3ac)





    01:B750

    LDA #$FA
    JSR Simon_CheckMapCollision  ($d3ac)
    STA $04


    ldy #$00

    lda NameTableAddressLo   ($5e)
    and #$03
    eor #$03
    tax


    LDA #$06
    CLC
    ADC ObjectScreenXCoord   ($0348)
    ADC CurrentXScrollingPositionPixels  ($53)

    and #$04
    bne +


    dex
+   dex
    bpl +


    iny
    txa
    and #$03
    tax


+   lda #$ea
    pha
    lda #$03
    pha

    jmp $c185


I'd think that if was possible to cache the code into sram and skipping the bankswap, you'd net some more modest gains.


edit: 608 -> 601. Saved few bytes.
edit: Some cleanup from transcribing errors.

Noside

@Bisqwit, just came back to say thank you for the large dialog box upgrade, I'm enjoying the game sooo much! :woot!:

ShadowOne333

Cant wait for the new dialog box update to give Castlevania II yet another full run :)

Bisqwit

Quote from: ShadowOne333 on July 18, 2020, 02:11:01 PM
Cant wait for the new dialog box update to give Castlevania II yet another full run :)

In the meantime, you can use this tool to try out different dialog box layouts and see which sizes would work for you. https://bisqwit.iki.fi/cv2fin/wordwrap.php

Rodimus Primal

Quote from: Bisqwit on July 18, 2020, 04:20:05 PM
In the meantime, you can use this tool to try out different dialog box layouts and see which sizes would work for you. https://bisqwit.iki.fi/cv2fin/wordwrap.php

Is there any chance of restoring the classic line "What a horrible night to have a curse?" it's rather iconic.

Bisqwit

#1086
Quote from: Rodimus Primal on July 18, 2020, 09:22:25 PMIs there any chance of restoring the classic line "What a horrible night to have a curse?" it's rather iconic.

If you want to find nostalgy in the NAR translations, play the NAR game.

The goals of this project are in restoring the theme of the original game, which is the Japanese version, and some usability improvements. In that one, the cutscenes regarding day and night transitions have a theme akin to classic films (and films in general), much like the title screen and ending of Castlevania, or the attract mode of Castlevania III, or indeed, the title screen of Simon's Quest. It is a half-serious parody of classic horror films, novels, and theatre plays. For the night transitions, much like the endings, it uses narration: And then, descended a horrible night. Cue screen blanking out, as if the curtain goes down while the set and lighting is hastily readjusted, and actors freeze in their places, and then curtain rises again and the show continues.

binarck

#1087
Didn't realize I could put earlier collision code into $03:b220 to save bankswap, but whatever.


Looked into 3-pillar exploit. Has 2 big problems.
- Sprite oam is unreliable. ObjectScreenYCoord will probably be below. Assume that it's safe to discard alignment of +6-7 pixels, that y-speed (16-bit) will not reach. Could be unsafe to ignore.

- _func_C38A will detect $00 collision and CurrentXScrollingPositionPixels is bumped by 1. Causes 1-pixel foot to get stuck in cliff and exploit succeeds regardless of above check.

Other than nerfing y-subpixel velocity from using item, situation looks bad.


edit: New approach. Widen the water by 1 block? Forces the riddle to be solved.
edit: No side effects yet from both L/R collision optimizer and fall-floors patch.

_____________________________________________________


Now that I understand it's a dramatic theatre play, introduce the off-screen narrator some more? Sometimes randomly show bits of Castlevania or Dracula literature?

- Game Over:
  "What a horrible night to have a curse!" (sympathetic insult to player if dark)

- Load Game:
  "And then, descended a horrible night." (reminder to audience of situation, after coming back from long intermission)

(I'd add more examples but my knowledge of book passages is very dry)


Could also be done per location and daytime. Make the text disappear after some seconds to make it clear someone is speaking. To heighten the mood and another creative easter egg.

Bisqwit

Quote from: binarck on July 19, 2020, 08:42:40 AMNow that I understand it's a dramatic theatre play, introduce the off-screen narrator some more? Sometimes randomly show bits of Castlevania or Dracula literature?

- Game Over:
  "What a horrible night to have a curse!" (sympathetic insult to player if dark)

- Load Game:
  "And then, descended a horrible night." (reminder to audience of situation, after coming back from long intermission)

(I'd add more examples but my knowledge of book passages is very dry)


Could also be done per location and daytime. Make the text disappear after some seconds to make it clear someone is speaking. To heighten the mood and another creative easter egg.

I like this idea. I might do this for the load-game thing, which I added. I am not willing to add it in the middle of a game, unless the original game has clear indication that this is what the authors wanted to do.

binarck

#1089
Quote
I am not willing to add it in the middle of a game, unless the original game has clear indication that this is what the authors wanted to do.

I don't think it would make sense while gameplay is active; only as added NPCs at best.


The "Game Over - Continue - Save - Password" screen was the only other spot I was thinking of. And perhaps when starting a "New Game" when it shows "Game Start - Player 3".

But that would be it.


Quote
Could also be done per location and daytime.

To expand, I meant if you "load game" or "game over" at Jova Woods, The Ruins, Town of Yomi, Bathory Mansion, Dracula's Room.. you'd get different unique lines. Which also change if it was morning vs evening.

____________________________________________________


Last idea about the Cemetary viewing platform. Physically expand the map and make it 4-blocks high and adjust the staircase on the right?

____________________________________________________


Will take a side on vwf. No risk-it, no biscuit!

____________________________________________________


Simon_CheckMapCollision_LeftAndRight is not safe to optimize that easily. 05AF (left) vs 0698 (right). Can create invisible platforms in odd places.

Trashed.

____________________________________________________


If anyone wants to try the floors fall fix, it's short.

03:86EA: 4C 20 B2  JMP $B220


>03:B220: 8D 90 03  STA $0390 = #$01
03:B223: 4C BD DE  JMP $DEBD


When Simon is normally falling (not from jumping) and uses an item, it sets $0390 to $05. So I think it's safe to do.

odditude

is it feasible to add a non-full-tile sized gap between rows of text? while the full tile gap of the original is definitely excessive from a legibility standpoint, having no gap at all makes things a bit... cramped.

Bisqwit

Quote from: odditude on July 19, 2020, 10:48:37 PMis it feasible to add a non-full-tile sized gap between rows of text? while the full tile gap of the original is definitely excessive from a legibility standpoint, having no gap at all makes things a bit... cramped.
Only by either writing a VWF renderer (which draws text pixel by pixel rather than tile by tile), or by making the font smaller so that more of each tile is left empty.
The former is a huge undertaking (and only works on certain types of donor cards, such as the UNROM), and the latter is something I am not very happy to do, for instance because the uppercase font is straight from the original game.

odditude

Quote from: Bisqwit on July 20, 2020, 03:52:56 AM
Only by either writing a VWF renderer (which draws text pixel by pixel rather than tile by tile), or by making the font smaller so that more of each tile is left empty.
The former is a huge undertaking (and only works on certain types of donor cards, such as the UNROM), and the latter is something I am not very happy to do, for instance because the uppercase font is straight from the original game.
not to mention that the latter would add its own issues with legibility.

thanks for the detailed response!

helaku

Bisqwit, I've found what the "Konami style Start text on the startup screen." does.

You've wrote it on your site: Pressing 'start' on the title-screen flashes the 'press start' prompt a few times before going to the main menu. This feature originally existed in the Japanese FDS game.

So, no bug, I've tested ;D

By the way Bisqwit, did you know that in the Japanese version when you are outside a Dracula mansion the "Dwelling of Doom (Mansion)" is heard (even in the night)?
Something like, the game announce that you are entering an dangerous domain.
https://www.youtube.com/watch?v=JyFDP6Ee0dk&feature=youtu.be&t=1240
This was changed on the USA version. Maybe in the future you can implement it?
Have at you!

Bisqwit

#1094
Quote from: helaku on July 22, 2020, 09:13:53 AMBy the way Bisqwit, did you know that in the Japanese version when you are outside a Dracula mansion the "Dwelling of Doom (Mansion)" is heard (even in the night)?
Something like, the game announce that you are entering an dangerous domain.
https://www.youtube.com/watch?v=JyFDP6Ee0dk&feature=youtu.be&t=1240
This was changed on the USA version. Maybe in the future you can implement it?

I did not know that, or at least I have filed the knowledge in a location that is presently inaccessible.

I can understand why it was that way, due to a technical limitation in the FDS. The FDS game has to fit everything usable in the RAM at once, while the ROM game can use bank switching in real time to access more memory. So, in the FDS version, the mansion entrance is in the same file with the mansion interior and the mansion music, and the game switches to mansion music since that's the only song loaded in RAM at the moment. You may notice all mansions use the same graphics. The set also includes the gates, which look identical in all mansions too. The mansion entrance is not in the same file with the wilderness surrounding it, because the mansion gates need special graphics that do not fit and are not duplicated in the files that contain forest, bridge, cave etc. graphics (each of those are essentially separate files).

It would be almost trivial to change the game to switch music like that, but I think they made the right call to change it for the NES.

helaku

By the way Bisqwit, do you know why the holy water in the FDS version doesn't have sound but have in USA version? This is also a limitation?

Thanks!
Have at you!

Bisqwit

Quote from: helaku on July 24, 2020, 04:42:34 AMBy the way Bisqwit, do you know why the holy water in the FDS version doesn't have sound but have in USA version? This is also a limitation?

Probably one of those things they did when they improved the sound design overall compared to the FDS version. The music, too, is much more detailed compared to the FDS version. Likely also a memory capacity issue.

(It's funny how in the case of Super Mario Bros., the memory capacity thing worked the opposite way, in favor of the FDS version. In the NES version they used a board that did not support bank switching, so everything had to fit in the addressable space at once. In the FDS version, they could load a separate file for the ending, so incidentally it could also have a longer song and more animation.)

July 25, 2020, 10:45:31 AM - (Auto Merged - Double Posts are not allowed before 7 days.)

Hmm, I think it's time to close this loophole; someone has pointed it out in a review 3 months ago.



July 25, 2020, 02:43:33 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

Version 2.11.0 has been released.
https://bisqwit.iki.fi/cv2fin/

Changes:
— English dialog boxes have been resized.
— Some text changes in English to take advantage of dialog resizes.
— More relocatable code.
— The confirm button on save/load screens was changed from A to B, to match the behavior in merchant boxes.

Bugfixes:
— Smart actor hiding / unhiding when showing a dialog box has been improved.
— Fix 2.10.0 regression: Visiting the SRAM-save screen can soft-lock the game in some situations by preventing screen scrolling
— Fix potential source of bugs: Blob merger in the linker did not verify if two sets of externs have a bytewise partial overlap.
— Dialog box text overflow fixes in Finnish, French, Tagalog and Spanish versions. (By resizing the boxes. Pending actual fixes from the translators.)
— Saving the game on the gameover screen no longer lets you keep the hearts & exp.
— Fixed original game bug where if you press left on status screen after using the stake, the display might get corrupted.
— When entering the save screen from status screen, added screen blanking 1 frame earlier to avoid a flash of broken graphics
— When entering the Castlevania ruins, screen scrolling is now inhibited until it's actually supposed to scroll (fix original game bug).

(Note: If you're the one who downloaded this patch at 2020-07-25 19:39:18 UTC, re-download to fix a bug.)

ifightdragons

#1097
That was most likely me. I tried downloading again, but now the ROM simply goes black after trying to start a game from the title screen.
Worked fine on the previous iteration I downloaded a few hours ago.

Bisqwit

Quote from: ifightdragons on July 25, 2020, 05:55:09 PM
That was most likely me. I tried downloading again, but now the ROM simply goes black after trying to start a game from the title screen.
Worked fine on the previous iteration I downloaded a few hours ago.

Unable to reproduce this observation. Make sure you do not have cheats active.

cralso

Hi Bisqwit, I'm glad know now we have this in spanish, however I download the patch in spanish and is some other languague, not spanish :S

Maybe something is wrong with the download links?