Castlevania II (Simon's Quest) - Multilingual enhancement

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

Previous topic - Next topic

Bisqwit

Quote from: Clippit on May 30, 2014, 07:27:16 PMEven though I don't like to admit it, yes, Spanish is my mother language, and I always thought translating games could be kind of fun. Any idea of what could be done regarding Spanish's special symbols? "á, é, í, ó, ú, ü, ñ, ¿, ¡" Maybe the accents could be skipped without it being a big deal, but some words require the "ñ" in order to sound properly.
...anyway, I'll be sending you an e-mail soon-ish.
Special symbols are mostly not a problem, as long as you can maintain a budget of total distinct characters. The English version for example never uses the capital "Q" or "Z" in its game dialog. In different contexts (menu screen, map, etc.) different compromises are made. I mean, we were able to do French. Spanish should not be a problem. I don't particularly look forward to Tiếng Việt though.

ShadowOne333

What?
Spanish has not been added as an optional language?

In PAL games there is always Italian, German, French and Spanish.
I thought it was added, since spanish is always one of the first languages in which a game is translated to.

I am not complaining, I just thought it was added :)
Anyway, if Clippit needs any help for the translation, I am up for it.

Spanish is also my mother language and I would be glad to help with such project.
Clippit, please let me know :)

Bisqwit

Version 2.9.8.15 released!

This change includes some fixes into the Japanese version, contributed by "g ponys".
It also includes some fix to the SRAM screen, but I don't remember what that fix was for.

Download at: http://bisqwit.iki.fi/cv2fin/

Vanya

#823
Groovie. Any news on the new intro music?

EDIT:
I have a request, Bisqwit, if it isn't too much trouble.
Could you add some placeholder music to the Intro Scene?
Even if it's just an already existing song from the original game, it would at least make the intro feel more complete.
Thanks.

Bisqwit

#824
Quote from: Vanya on August 31, 2014, 12:57:02 PMGroovie. Any news on the new intro music?
I have a request, Bisqwit, if it isn't too much trouble.
Could you add some placeholder music to the Intro Scene?
Even if it's just an already existing song from the original game, it would at least make the intro feel more complete.
Thanks.
Hmm...
I have to think about it.  Thank you for your input.

In other news, I wonder what's up with the Iu Mien, Norwegian, Spanish and German translations, haven't heard from each respective translator / candidate for a long time.

Also, writing it here so I won't forget it: It has been reported to me that at least the Japanese (retranslation) version has a bug in its clue code; clues picked up do not appear in the clue listing on status screen. If you are going to report a bug, here's a good way to do it ;)  https://www.youtube.com/watch?v=a7fous_lSgc

BlazeHeatnix

This hack, along with all the other improvement hacks on this site, makes this game complete and the ultimate version of CV2.

I too request you add music to the intro, it's kinda boring without it. I suggest just using the password theme.

Bisqwit

Thank you for the feedback!

This reminds me, there are two typo fixes to the Finnish version that are pending a new release...

daskrabs

Is there a Famicom label for this version, or just a normal CV2 label that would fit a Famicom cart?

Bisqwit

Quote from: daskrabs on February 27, 2015, 09:15:15 AMIs there a Famicom label for this version, or just a normal CV2 label that would fit a Famicom cart?
I can't quite decipher ascertain what you are asking...

There are three major officially released versions of the game.
Famicom Disk System version: The Japanese game. Distributed on diskettes. Can not be put in a ROM (and a cartridge) without significant hacks.
NES NTSC version: The version of the cartridge that goes in NES/Famicom and runs at 60 Hz on NTSC systems. Sold in USA and other non-Japanese countries with the NTSC system.
NES PAL version: The version of the cartridge that goes in NES and runs at 50 Hz on PAL systems. Sold in countries with the PAL system.

My hack addresses the latter two versions. The hacked ROM can be put in a cartridge, and the cartridge can be inserted in any NES or Famicom system, assuming your cartridge's connector is of the proper type or you have an adapter. The hack cannot be put on a diskette and played on FDS, nor does my hack convert the diskette game into a cartridge game.

daskrabs

That was going to be my next question, but I'm actually referring to the sticker that goes on the front of the cartridge. Has someone designed one? I'm looking for a Famicom sticker. Preferably one that has the Japanese design.

Bisqwit

Interesting! I haven't heard of stickers designed for this enhancement hack yet.

daskrabs

#831
Yes, it would be nice if someone with Photoshop skills could make a label for someone that wanted to re-purpose, for example, a Fire Emblem Gaiden cartridge.

February 27, 2015, 02:56:38 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

FYI, for those of you getting a grey screen when you test in emulator, you need to use the CV2 rom to patch, not the donor cart. I was trying to patch a Fire Emblem rom and getting the same issue. Use the NTSC CV2 rom.

Chpexo

.
#832
.

Bisqwit

Version 2.9.8.16 of the patch has been released at: http://bisqwit.iki.fi/cv2fin/

Changes include:
- The multilingual "Version" strings on the title page have been fixed. In the previous release, some versions had "Salin" there where "Version" or some such should have been.
- The Finnish prologue has been reworded partially for more fluent language. Some typos were also fixed throughout the game.

keropi


PresidentLeever

Sorry to hijack the thread, but I remember seeing a hack with various boss behaviour changes and I'm wondering if it was ever finished and what it was called?

As for this hack, I've played it and can vouch for its quality.  :thumbsup:
Mini-reviews, retro sound chip tribute, romhacks and general listage at my site: Mini-Revver.

Bisqwit

Quote from: Chpexo on April 03, 2015, 11:08:18 PM
Muzak: https://www.youtube.com/embed/6zwVL9cvkNU
Video appears to have turned "private" since I last saw it...
But I downloaded your zip.

recap.ftm: This sounds good for the most part, but I really really don't like lines 1C-24 from the song start (repeated twice), or lines from 16 onwards in pattern 3. There's a dischord and a lack of a logical flow. Lacking formal musical training and the vocabulary for what I understand, I don't know how to best describe it, but I've gotten this feeling from a couple of songs you've submitted so far. Everything else is good in this song.
final song v2: Not only are the instruments from Batman, the whole song sounds like it's a modification of the Batman first level song. And the melody in patterns 1-3 and 7 sounds like it comes from a random generator. I really don't like it. Sorry.
wind sound effect: This is an intermission between the recap and the girl appearing? Or is it a sound effect for the girl disappearing? Maybe this could work for that part.
journey begins: This might work.

Chpexo

.
#837
.

helaku

First of all I want to express my gratitude for this beautiful project.
Castlevania II: Simon's Quest it's a favorite game from childhood.
About the Castlevania series, he remains my favorite; the second is Castlevania Symphony of the Night.
I've waited some time for a project like this.
Second of all, if you allow me, I want to suggest some ideas if you can implement:


1) when it's dark the doors to be closed not opened. It's something that pissed me off when I was a kid. It gives you the impression that you can enter the church or the house but you can't;

2) the time to pass when you are in the church or the house (like in real life) but to be stopped when you are in the castles (because the castles are cursed);

3) to repair the bug with the white crystal, when you are in the first castle you can jump to an invisible platform even if you don't select the white crystal; from my point of view it's logic to be this way: when you don't select the white crystal and jump on the invisible platform to fall in the water (because without it you can't see the platform) and the game gets a little harder and challenging which is great;



4) to add utilization for cross and the ring; if you use the cross for example you can kill all the enemies on the area, something like a bomb (like in the movies; cross can kill monsters); if you use the cross the enemies will be killed and you can collect the hearts from them; we know that without the cross you can't enter Dracula castle but you have made now the cross selectable which will mislead the player to think that he can use the cross like a normal item; every item except cross and ring can be used if you select them;

5) to repair the garlic bug; when you use a garlic you can't use holly water and the first dagger.



Otherwise your project is close to perfection!
What do you think Bisqwit?
Have at you!

Bisqwit

Thank you for the feedback helaku!

1) Making the city doors close at night is actually on the TODO list. But because the doors are not actually objects, but part of the static background graphics, it is very difficult to implement, at least without making the cities lag a ton whenever you scroll the screen, as the game would have to consider which graphics to render depending on time of day. This fix is unlikely to ever be actually implemented, unless someone invents a really efficient way to do it.

2) The reason that time is stopped while in church or houses is because you cannot enter them at night, and because the NPC objects are inhibited from appearing on night. Stopping the time avoids the uncomfortable question of what exactly should happen when it becomes night when you're still inside.
You might be able to go about the way that Papers, Please does it, and run the clock until 17:59:59, and stop it there, making it a nightfall immediately when the player exits the house.

3) This is kind of a vexing problem. I never understood why this one invisible thing in the game was made visible with a crystal, when every other invisible thing is made visible with Dracula's eye. In any case, it's not like the player expects to be able to jump on the moving platform they cannot see. A beginning player is not likely to try the jump and succeed without the crystal. It is an advanced player's technique, or a speedrun technique. I would leave it be. Secondly it is probably difficult to change. :-)

4) The cross and the ring are indeed selectable items now, yet only the rib, the eye, the nail, and the heart have ingame uses. However, there are now some NPCs that react to you either presenting or possessing these remaining two items, if dialog extensions are permitted in the patch. It is difficult to justify going further than this without altering the nature of the game.

5) "to repair the garlic bug; when you use a garlic you can't use holly water and the first dagger" -- How's that a bug? You can only use one item at time. *tests* Ohh, you mean you cannot use those weapons when a garlic is still visible on the screen. That's interesting, yes. Note that you also cannot throw a holy water bottle as long as the sacred flame or the diamond is visible on the screen. It is kind of similar to how in Mega Man, you cannot even enter the pause screen as long as your weapon effect is still on-screen. In Mega Man, the reason is in VRAM; graphics for these different weapon effects cannot fit in the VRAM at the same time, but this is not the reason in Simon's Quest.

Hmm... Here's the code that is responsible for dealing with spawning the onscreen special weapon object, such as the garlic...
SpecialWeaponUse_Try_FindSlot
        $D82F  A2 03:       ldx #$03  ; Start from slot #3
-       $D831  BD B4 03:    lda ObjectType,x
        $D834  F0 07:       beq SpecialWeaponUse_Do_ThereisAFreeSlot  ; Use slot if free
        $D836  E8:          inx
        $D837  E0 06:       cpx #$06 ; Stop at slot #6
        $D839  90 F6:       bcc -               ; $D831
SpecialWeaponUse_Nothing
        $D83B  18:          clc  ; Didn't create weapon
        $D83C  60:          rts
;------------------------------------------
SpecialWeaponUse_Do_ThereisAFreeSlot
        $D83D  A5 90:       lda InventoryCursorSelected1   ; Choose weapon type and use jump table.
        $D83F  20 BB C5:    jsr JumpWithParams 
_JumpPointerTable_1D842
        $D842  3B D8:       .word (SpecialWeaponUse_Nothing) ;D83B (1D83B) ()
        $D844  CF D8:       .word (SpecialWeaponUse_Weapon1_Dagger) ;D8CF (1D8CF) ()
        $D846  D6 D8:       .word (SpecialWeaponUse_Weapon2and3_Knifes) ;D8D6 (1D8D6) ()
        $D848  D6 D8:       .word (SpecialWeaponUse_Weapon2and3_Knifes) ;D8D6 (1D8D6) ()
        $D84A  A3 D8:       .word (SpecialWeaponUse_Weapon4_Bottle) ;D8A3 (1D8A3) ()
        $D84C  0D D8:       .word (SpecialWeaponUse_Weapon5_Diamond) ;D80D (1D80D) ()
        $D84E  9B D8:       .word (SpecialWeaponUse_Weapon6_Flame) ;D89B (1D89B) ()
        $D850  92 D8:       .word (SpecialWeaponUse_Weapon7_OakStake) ;D892 (1D892) ()
        $D852  1A D9:       .word (SpecialWeaponUse_Weapon8_Laurel) ;D91A (1D91A) ()
        $D854  2E D9:       .word (SpecialWeaponUse_Weapon9_Garlic) ;D92E (1D92E) ()

where e.g. Bottle is created as such:
SpecialWeaponUse_Weapon4_Bottle
        $D8A3  E0 03:       cpx #$03       ; Was the slot number #3?
        $D8A5  F0 03:       beq SpecialWeaponUse_CreateGravityObject ; Go ahead if so
        $D8A7  4C 3B D8:    jmp SpecialWeaponUse_Nothing ; Don't create if wasn't
;------------------------------------------
SpecialWeaponUse_CreateGravityObject
        $D8AA  20 E8 D7:    jsr SpecialWeaponUse_CreateObject
        $D8AD  A9 01:       lda #$01
        $D8AF  A0 80:       ldy #$80
        $D8B1  20 4F E0:    jsr Object_SetXVelocity16bit_from_AY_invert_if_ObjectFacingLeft_set
        $D8B4  A9 FF:       lda #$FF
        $D8B6  A0 00:       ldy #$00
        $D8B8  20 76 E0:    jsr Object_SetYVelocity16bit_from_AY
        $D8BB  A9 11:       lda #$11
        $D8BD  20 18 C1:    jsr AnyBankPlayTracks
        $D8C0  A5 90:       lda InventoryCursorSelected1
        $D8C2  C9 04:       cmp #$04
        $D8C4  F0 05:       beq +               ; $D8CB
        $D8C6  A9 20:       lda #$20
-       $D8C8  4C 2A D8:    jmp _loc_1D82A

+       $D8CB  A9 33:       lda #$33
        $D8CD  D0 F9:       bne -               ; $D8C8 -> _loc_1D82A

Ah, so there we go.
A bottle is only ever created in slot 3. If the first free slot is 4 or 5, it won't do. The reason for this is to avoid having multiple bottles on screen simultaneously.
But, seeing how this is implemented, we can probably deduce a way to circumvent the limitation!

There we go. A bottle is not prevented from being created while garlic is simultaneously on the screen, as long as none of the remaining on-screen garlics occupy slot #3! This is ensured by scrolling away the first garlic. Garlics in slots #4 and #5 don't matter.
I think this confirms the nature of this limitation as a bug. And as reported, the dagger also shares this same check.

Now how could I patch the code at D8A3..D8A9 (seven bytes), and D8CF..D8D5 (another seven, for dagger) to fix this problem?
I would probably need a subroutine that looks like this:

  lda InventoryCursorSelected1 ; 2 bytes
  ldy #2             ; 2 bytes -- using Y so we won't clobber X
loop:
  iny                ; 1 byte
  cpy #6             ; 2 bytes
  beq accept         ; 2 bytes
  cmp ObjectType,y   ; 3 bytes
  bne loop           ; 2 bytes
fail:
  pla ; 1 byte (two plas = pop one return address)
  pla ; 1 byte
  clc ; 1 byte , Do the same as SpecialWeaponUse_Nothing
accept:
  rts ; 1 byte

For a total of 18 bytes.
And the call site at D8A3..D8A9 would be transformed into:
jsr CheckIdenticalWeaponObject ; 3 bytes (call this new function)
beq SpecialWeaponUse_CreateGravityObject ; 2 bytes
nop
nop

And the call site at D8CF would be transformed into:
jsr CheckIdenticalWeaponObject ; 3 bytes (call this new function)
beq SpecialWeaponUse_CreateDaggerOrKnife ; 2 bytes
nop
nop

Relieving these four nop-bytes as free space. I might even need to relocate those code sections a bit so that those four free bytes can be made consecutive. Something unrelated just might be able to squeeze in those four bytes. It is still a net loss of 14 bytes in the common bank (bank 7) that is already starved for space. The 18 bytes could however also be placed in bank 3, because that's where SpecialWeaponUse_Try_FindSlot is invoked from.
Okay, this one is officially on a TODO list.

There is one more bug report that is pending a bug fix: 6) When the "Simon blinks when hurt" patch is enabled, and you land the final hit on Dracula while Simon is blinking, it is possible that Simon remains invisible throughout the whole ending scene.