MagicEngine
Forums
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
 Japanese English 

Startling Odyssey 2 English Translation beta-alpha UPDATE
Goto page Previous  1, 2, 3, 4, 5, 6  Next
 
Post new topic   Reply to topic    MagicEngine Forum Index -> Translation Projects
View previous topic :: View next topic  
Author Message
EsperKnight
Member
Member


Joined: 11 Jun 2009
Posts: 21
Location: VA, USA

PostPosted: Mon Apr 05, 2010 9:15 pm    Post subject: Reply with quote

That's what I'm afraid of Tom Smile

I'm gonna look at doing it tonight. Sorry I haven't been on IRC in a while, been to tired taking care of my son but he seems to be on a schedule so I'm slowly trying to get back into things.

I'm thinking it also could be due to an interrupt happening in the middle of it... I can't remember if I asked you or Dave (I'm guessing Dave Smile but gonna try putting in a sei and whatever the other one is to disable them *crosses fingers*

It works great on Mednafen and I guess any other emulator at least Very Happy
Back to top
View user's profile Send private message Visit poster's website AIM Address MSN Messenger
EsperKnight
Member
Member


Joined: 11 Jun 2009
Posts: 21
Location: VA, USA

PostPosted: Mon Apr 05, 2010 9:25 pm    Post subject: Reply with quote

And I prob should go into detail on what I did (it's actually a pretty generic routine Smile

I have a copy of the $E060 bios routine that I have located in a bank that's always loaded (or should be... it's actually the bank the text routine is in Smile. Nothing has been changed in this except for positioning of where to get the font at (which is located in this same bank) (I need to slim it down but I'm lazy.. Wink

It runs through this to pull letters. It does EXACTLY the same thing as the normal one does 'cept get the font from a different place. After this runs it stores the letter in RAM.

The next routine I call is before the print to screen routine which grabs this letter, shift however much it needs to be shifted to the right to fit it on the tile with the previous letter. It also saves the overflow into a space in RAM really far in so hopefully I won't overwrite anything *crosses fingers*. This code also increments the tile itself if need be.

It then calls in the regular print routine with the modification in that it doesn't increment the tile position (only the routine above does).

The only other routine that's called is the end of line routine which passes in a space to my custom $E060 routine which then runs through the above, this ensures the last bit of the letter gets printed off before moving to the next line (laziness for the win! Smile

And that's it. Nice and simple Smile I don't mess with any of the printing stuff (setting VDC or anything like that). Figure it can handle that for me Smile

Oh yeah! The only other thing I added was the ability to use ASCII, it converts ASCII to SJIS.

Doug
Back to top
View user's profile Send private message Visit poster's website AIM Address MSN Messenger
EsperKnight
Member
Member


Joined: 11 Jun 2009
Posts: 21
Location: VA, USA

PostPosted: Tue Apr 06, 2010 12:43 pm    Post subject: Reply with quote

Below is my E060 code and VWF code and EOL code. Anyone can use this so feel free. Just wouldn't mind a mention if you do. Also the VWF code is somewhat specific in the beginning but mostly it's generic. Any questions feel free to ask Smile

Tom, if you see anything below that sticks out that may cause the issues on the real hardware lemme know, thanks!

Also this adds the SEI/CEI instructions, hopefully that'll fix it Very Happy



; A898 is the one used by the location text...

; Reminder this starts at 2A30000 on the ISO

; Modify C9F6 to 2006DC

.org $D000

.incbin "cfont.dmp"

EX_GETFNT:

; starts at f124 in syscard3.pce

JSR start

; below is where it loads the bank to pull the letter, as well as the compression portion
load_letter:
BCC no_error
LDA #$01
RTS

no_error:
LDA #$d0
STA <$fc
LDA <$fb
SEC
SBC #$a0
BPL backup_3_4

backup_5_6:
NOP
BRA MM_backed_up

backup_3_4:
LDA #$d0
STA <$fc
NOP
STA $22b9

MM_backed_up:
LDA <$f8
STA <$ec
LDA <$f9
STA <$ed
STZ <$ee
BBR0 <$ff, uncompressed_font ; branches here to the uncompressed vers?

compressed_font:
LDX #$08


mult_8: ; sets up low byte of where the letter is at in the table
CLC
LDA <$ec
ADC <$f8
STA <$ec
LDA <$ed
ADC <$f9
STA <$ed
CLA
ADC <$ee
STA <$ee
DEX
BNE mult_8
ASL <$ec
ROL <$ed
ROL <$ee
BRA fin_mult

uncompressed_font:
LDX #$05

mult_EC:
ASL <$ec
ROL <$ed
ROL <$ee
DEX
BNE mult_EC

fin_mult:
LDA <$ff
ASL a
INC a
ADC <$ee
STA <$ee
LDA <$ed
LDX #$05

mult_EE:
LSR <$ee
ROR a
DEX
BNE mult_EE

STA <$ee
LDA <$ed
AND #$1f
CLC
ADC <$fc
STA <$ed
LDA <$ee
BBS7 <$fc, tam_5_6 ; branches here to load up proper banks, this will change...

tam_3_4:
NOP
BRA loaded_MM

tam_5_6:
NOP
loaded_MM:
BBS0 <$ff, is_compressed
CLY

load_uncfont:
LDA [$ec], Y
STA [$fa], Y
INY
CPY #$20
BNE load_uncfont
BRA fin_uncfont

is_compressed:
JSR compressed

fin_uncfont:
BBS7 <$fc, reset_5_6

reset_3_4:
NOP
BRA skip_TAM

reset_5_6:
NOP

skip_TAM:
CLA
JMP vwf_code ; yay, we loaded our letter, were done...

; below is where we calculate our index
; for us, were using the compressed 16x16 font
; which is 0x11 long for each letter
start:
LDA <$f9
SEC
SBC #$81
CMP #$6f
BCS invalid_letter; checks high high byte (which'll be $81 or $82 for Eng)
CMP #$1f
BCC valid_letter; this should always jump here...
CMP #$3f
BCC invalid_letter ; checks high high byte (which'll be $81 or $82 for Eng)
SBC #$40

valid_letter:
ASL a
ADC #$21
STA <$f9
LDA <$f8
SEC
SBC #$40
CMP #$bd
BCS invalid_letter ; low byte check
CMP #$3f
BEQ invalid_letter ; low byte check
BCS dont_inc
INC a

dont_inc:
CMP #$5f
BCS valid_letter1 ;
CLC
ADC #$20
BRA valid_letter2 ;

invalid_letter:
SEC
RTS

valid_letter1:
INC <$f9
SEC
SBC #$3e

valid_letter2:
STA <$f8
LDA <$f9
CMP #$23 ; this one is for $82
BEQ eq_23
CMP #$26
BEQ eq_26
CMP #$27
BEQ eq_27
CMP #$28
BCC eq_28
CMP #$30
BCC invalid_letter ; checks high high byte (which'll be $81 or $82 for Eng)
CMP #$50
BCS invalid_letter ; checks high high byte (which'll be $81 or $82 for Eng)
SEC
SBC #$08
BRA eq_28 ; guessing eq_28 is the default in case it gets through the rest... seems to be for $81

eq_23:
LDA <$f8
CMP #$61
BCC skip_sbc_06
SBC #$06

skip_sbc_06:
CMP #$41
BCC skip_sbc_07
SBC #$07

skip_sbc_07:
SEC
SBC #$0f
BRA done_w_F8

eq_26:
LDA <$f8
CMP #$41
BCC done_w_F8
SBC #$08
BRA done_w_F8

eq_27:
LDA <$f8
CMP #$51
BCC done_w_F8
SBC #$0f

done_w_F8:
STA <$f8
LDA <$f9

eq_28:
SEC
SBC #$21
ASL a
TAY
LDA <$f8
SEC
SBC #$21
CLC
ADC $f27e, Y
STA <$f8
LDA $f27f, Y
ADC #$00
STA <$f9
CLC
RTS

; yup, an index table smack dab in the middle of the code
.incbin "font_index.bin"

compressed:
CLY

start_unc:
LDA [$ec], Y
INY
BSR store_byte
LDA [$ec], Y
INY
PHA
AND #$f0
BSR store_byte
LDA [$ec], Y
INY
STA $22bd
PLA
LDX #$04

shift:
ASL $22bd
ROL a
DEX
BNE shift

BSR store_byte
LDA $22bd
AND #$f0
BSR store_byte
CPY #$12
BCC start_unc
CLA
LDY #$07

store_two_bottom: ; this stores the two bottom rows, it actually does at least 3 but goes
; the $20 bytes of the font
STA [$fa], Y
DEY
BPL store_two_bottom
RTS

store_byte:
STA [$fa]
INC <$fa
BNE skip_inc
INC <$fb ; from what i can tell this is never used...

skip_inc:
RTS

-----------------------------------
vwf_code:
SEI

LDA $3FDF ; current position
CMP #$10
BCC init

AND #$0F
STA $3FDF ; current position

CLC
LDA $C14F
ADC #$40
STA $C14F
LDA $C150
ADC #$00
STA $C150


; Set current tile
LDA #$04
CLC
ADC $C151
STA $C151
LDA $C152
ADC #$00
STA $C152

; Set current position on screen
LDA #$02
CLC
ADC $60F3
STA $60F3


LDX #$00
clear_backup:
STZ $3F70,X ; letter
INX
TXA
CMP #$20
BEQ finish_clear
JMP clear_backup
finish_clear:
CLX
;LDA $C14F
;BEQ init
;SBC #$20
;STA $C14F
;INC ($33ED)
;INC ($33ED)


init:
LDX #$02

start_vwf:
STZ $3EDD ; temp shifted off overflow
STZ $3EDE ; temp shifted off overflow
LDY $3FDF ; current position
CLC

shift_vwf:
BEQ end
ROR $C153,X ; letter
INX
ROR $C153,X ; letter
DEX
ROR $3EDD ; temp shifted off overflow
ROR $3EDE ; temp shifted off overflow
DEY
JMP shift_vwf

end:
LDA $C153,X ; letter
ORA $3F50,X ; shifted off overflow
STA $C153,X ; letter
INX

LDA $C153,X ; letter
ORA $3F50,X ; shifted off overflow
STA $C153,X ; letter
DEX

LDA $3EDD ; temp shifted off overflow
STA $3F50,X ; shifted off overflow
INX

LDA $3EDE ; temp shifted off overflow
STA $3F50,X ; shifted off overflow
INX

TXA
CMP #$20
BEQ finish
JMP start_vwf

finish:
CLC
LDA $3FDF ; current position
ADC $C153 ; letter size
STA $3FDF ; current position
;LDA $33ED ; ?
;STA <$7D ; ?
;STZ $C153 ; letter size

; Below we start our code to backup the current letter


LDX #$02
curr_let_backup:
LDA $3F70,X ; letter
ORA $C153,X ; shifted off overflow
STA $3F70,X ; letter
INX
TXA
CMP #$20
BEQ finish_store
JMP curr_let_backup
finish_store:
CLX
store:
LDA $3F70,X ; letter
STA $C153,X ; shifted off overflow
INX
TXA
CMP #$20
BEQ fin
JMP store
fin:
CLI

RTS

------------------------

; Below is my hack for the newline... *crosses fingers*

;JSR vwf_code

; This modifies C532 in game when doing a new line, modify to JSR $DE83 (or so) : 20 83 DE

LDA #$40
STA $c148
LDA #$81
STA $C149
JSR $C9E0
LDA #$00 ; Take our tab character...
RTS
Back to top
View user's profile Send private message Visit poster's website AIM Address MSN Messenger
Tomaitheous
Elder
Elder


Joined: 27 Sep 2005
Posts: 306
Location: Tucson

PostPosted: Wed Apr 07, 2010 4:34 am    Post subject: Reply with quote

EsperKnight wrote:

I'm thinking it also could be due to an interrupt happening in the middle of it... I can't remember if I asked you or Dave (I'm guessing Dave Smile but gonna try putting in a sei and whatever the other one is to disable them *crosses fingers*


There's a problem with this. You don't know if the code that originally lead to the print routine already did SEI or not. It's an unknown state you'd have to test for. I mean, you might not want to CLI if the part of the code needs to stay in SEI mode.

Here's the work around:

PHP
SEI
NOP

.
.
.
.
PLP <-at the end

If you replaced the VRAM upload routine or are calling it, might want to do the above and see what happens. You don't want it for ALL of your print routine - just the part that writes to the VDC.

That's a safe approach and you don't need to know the state of the I flag before hand. But, your problem could be any one or a combination of things.

Also, if you have data in a different bank that you're accessing from your code bank - interrupt routines can change this on you, etc. So disabling interrupts, mapping in the bank even if it seems there all the time, is good debugging practice (I had this problem with Cosmic Fantasy 4 - both chapters that I did an generic roman print routine for. Sometime the bank that was supposed to be there - wasn't and would cause the game to freeze. Or corrupt. I saved the bank I wanted onto the stack, then mapped in the bank that would normally be there just in case. Fixed the problem).
_________________
www.pcedev.net
Back to top
View user's profile Send private message
duke4711
Regular
Regular


Joined: 19 Nov 2004
Posts: 84

PostPosted: Wed Apr 07, 2010 4:54 am    Post subject: Reply with quote

I finally got my copy of the game, and I used Nightwolve's Turborip to rip the game to my hard disc, and I applied the patch with no difficulty at all. I only had time to play it for about 30 minutes, and from what I could see so far, it is a truly great game, and the translation looks great too. Tru, I want to thank you and everyone else involved once again for doing such an excellent job on the translation. You are a gentleman and a scholar. Also, I have one question for anyone who knows. I'm not sure if one exists, but is there a text file anywhere that translates the spoken dialogue, like the one for Ys IV? Thanks in advance.
Back to top
View user's profile Send private message
M1Savage
Member
Member


Joined: 26 May 2002
Posts: 26

PostPosted: Wed Apr 07, 2010 1:41 pm    Post subject: Reply with quote

duke4711 wrote:
... Also, I have one question for anyone who knows. I'm not sure if one exists, but is there a text file anywhere that translates the spoken dialogue, like the one for Ys IV? Thanks in advance.


That's something I'd like to see too! Smile
Back to top
View user's profile Send private message Visit poster's website
Tru
Regular
Regular


Joined: 09 May 2003
Posts: 170
Location: SomeWhere

PostPosted: Wed Apr 07, 2010 4:06 pm    Post subject: Reply with quote

M1Savage wrote:
duke4711 wrote:
... Also, I have one question for anyone who knows. I'm not sure if one exists, but is there a text file anywhere that translates the spoken dialogue, like the one for Ys IV? Thanks in advance.


That's something I'd like to see too! Smile


Definately a possibility... but I think since this patch was done through machine translation, I will hold out until we get the human translation... it would avoid any confusion with a conflicting storyline...

Glad you like it duke4711 and everyone else...
_________________
There are only 2 races on this planet... the Intelligent and the Stupid...
Back to top
View user's profile Send private message AIM Address
EsperKnight
Member
Member


Joined: 11 Jun 2009
Posts: 21
Location: VA, USA

PostPosted: Wed Apr 07, 2010 5:57 pm    Post subject: Reply with quote

Hey Tom,
Sounds good I'll try some of that. I haven't changed any of the print routine (we'll, minor changes. Basically I took out the increase of the position that it called).

I'll try those suggestions as well...

I'll try getting on IRC tonight as well depending on how tired I am (staying up a bit late getting some other projects going too... Lady Sword anyone? Smile ) to chat with you about this too. If you want I can send you the iso with the changes on it so you can see it in action on your end as well, can't hurt as maybe you'll see something you recognize from your previous encounters with this stuff (never know Very Happy ). Thanks!
Back to top
View user's profile Send private message Visit poster's website AIM Address MSN Messenger
Tru
Regular
Regular


Joined: 09 May 2003
Posts: 170
Location: SomeWhere

PostPosted: Wed Apr 07, 2010 9:58 pm    Post subject: Reply with quote

EsperKnight wrote:
(staying up a bit late getting some other projects going too... Lady Sword anyone?


Very Happy Good project... one I would love to see myself!
_________________
There are only 2 races on this planet... the Intelligent and the Stupid...
Back to top
View user's profile Send private message AIM Address
dudule
Visitor
Visitor


Joined: 07 Apr 2010
Posts: 1

PostPosted: Wed Apr 07, 2010 10:25 pm    Post subject: Reply with quote

thank you, it's good job Wink
Back to top
View user's profile Send private message
Peperocket
Member
Member


Joined: 20 Apr 2005
Posts: 30

PostPosted: Mon Apr 12, 2010 11:46 am    Post subject: Reply with quote

Thank you very much for this translation, it's a very good work !!
Back to top
View user's profile Send private message
duke4711
Regular
Regular


Joined: 19 Nov 2004
Posts: 84

PostPosted: Wed Apr 14, 2010 3:08 am    Post subject: Reply with quote

Hey Tru, I found some untranslated dialogue that I thought you should know about. I wish I would have remembered to take a screen shot. Anyway, it's in the part where you first talk to King Kyle right before the other guy comes running in. There are about four untranslated screens. Other than that, the whole thing has been great. It's a good game with a good story so far.
Back to top
View user's profile Send private message
bernielindell
Regular
Regular


Joined: 04 Mar 2008
Posts: 149

PostPosted: Wed Apr 14, 2010 10:52 am    Post subject: Reply with quote

duke4711 wrote:
Hey Tru, I found some untranslated dialogue that I thought you should know about. I wish I would have remembered to take a screen shot. Anyway, it's in the part where you first talk to King Kyle right before the other guy comes running in. There are about four untranslated screens. Other than that, the whole thing has been great. It's a good game with a good story so far.


Have you applied the updated patch to your ISO? Check out the first post in this thread.
Back to top
View user's profile Send private message Send e-mail
duke4711
Regular
Regular


Joined: 19 Nov 2004
Posts: 84

PostPosted: Wed Apr 14, 2010 10:34 pm    Post subject: Reply with quote

I didn't even know about the update until now. But I got it now, thanks!
Back to top
View user's profile Send private message
cosmos99
Visitor
Visitor


Joined: 20 Apr 2010
Posts: 2

PostPosted: Sun Apr 25, 2010 6:39 pm    Post subject: Reply with quote

Many thanks for the translation ! Could you answer your PM please Tru ?
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    MagicEngine Forum Index -> Translation Projects All times are GMT + 1 Hour
Goto page Previous  1, 2, 3, 4, 5, 6  Next
Page 2 of 6

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group