View previous topic :: View next topic |
Author |
Message |
EsperKnight Member
Joined: 11 Jun 2009 Posts: 21 Location: VA, USA
|
Posted: Mon Apr 05, 2010 9:15 pm Post subject: |
|
|
That's what I'm afraid of Tom
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 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 |
|
Back to top |
|
|
EsperKnight Member
Joined: 11 Jun 2009 Posts: 21 Location: VA, USA
|
Posted: Mon Apr 05, 2010 9:25 pm Post subject: |
|
|
And I prob should go into detail on what I did (it's actually a pretty generic routine
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 . 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..
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!
And that's it. Nice and simple I don't mess with any of the printing stuff (setting VDC or anything like that). Figure it can handle that for me
Oh yeah! The only other thing I added was the ability to use ASCII, it converts ASCII to SJIS.
Doug |
|
Back to top |
|
|
EsperKnight Member
Joined: 11 Jun 2009 Posts: 21 Location: VA, USA
|
Posted: Tue Apr 06, 2010 12:43 pm Post subject: |
|
|
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
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
; 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 |
|
|
Tomaitheous Elder
Joined: 27 Sep 2005 Posts: 306 Location: Tucson
|
Posted: Wed Apr 07, 2010 4:34 am Post subject: |
|
|
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 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 |
|
|
duke4711 Regular
Joined: 19 Nov 2004 Posts: 84
|
Posted: Wed Apr 07, 2010 4:54 am Post subject: |
|
|
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 |
|
|
M1Savage Member
Joined: 26 May 2002 Posts: 26
|
Posted: Wed Apr 07, 2010 1:41 pm Post subject: |
|
|
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! |
|
Back to top |
|
|
Tru Regular
Joined: 09 May 2003 Posts: 170 Location: SomeWhere
|
Posted: Wed Apr 07, 2010 4:06 pm Post subject: |
|
|
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! |
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 |
|
|
EsperKnight Member
Joined: 11 Jun 2009 Posts: 21 Location: VA, USA
|
Posted: Wed Apr 07, 2010 5:57 pm Post subject: |
|
|
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? ) 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 ). Thanks! |
|
Back to top |
|
|
Tru Regular
Joined: 09 May 2003 Posts: 170 Location: SomeWhere
|
Posted: Wed Apr 07, 2010 9:58 pm Post subject: |
|
|
EsperKnight wrote: | (staying up a bit late getting some other projects going too... Lady Sword anyone? |
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 |
|
|
dudule Visitor
Joined: 07 Apr 2010 Posts: 1
|
Posted: Wed Apr 07, 2010 10:25 pm Post subject: |
|
|
thank you, it's good job |
|
Back to top |
|
|
Peperocket Member
Joined: 20 Apr 2005 Posts: 30
|
Posted: Mon Apr 12, 2010 11:46 am Post subject: |
|
|
Thank you very much for this translation, it's a very good work !! |
|
Back to top |
|
|
duke4711 Regular
Joined: 19 Nov 2004 Posts: 84
|
Posted: Wed Apr 14, 2010 3:08 am Post subject: |
|
|
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 |
|
|
bernielindell Regular
Joined: 04 Mar 2008 Posts: 149
|
Posted: Wed Apr 14, 2010 10:52 am Post subject: |
|
|
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 |
|
|
duke4711 Regular
Joined: 19 Nov 2004 Posts: 84
|
Posted: Wed Apr 14, 2010 10:34 pm Post subject: |
|
|
I didn't even know about the update until now. But I got it now, thanks! |
|
Back to top |
|
|
cosmos99 Visitor
Joined: 20 Apr 2010 Posts: 2
|
Posted: Sun Apr 25, 2010 6:39 pm Post subject: |
|
|
Many thanks for the translation ! Could you answer your PM please Tru ? |
|
Back to top |
|
|
|
|
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
|