Phantasy Star Generation 2: English Translation

Discuss/post fan stuff (images, fictions, games...)

How should the main characters be named in Generation:2 ?

Poll ended at Fri Oct 19, 2012 1:51 am

Use the full Japanese names
28
38%
Use the English Sega Genesis names
40
55%
It doesn't matter
5
7%
 
Total votes : 73

Re: Phantasy Star Generation 2: English Translation

Postby TheSegaDude » Fri Nov 06, 2015 10:18 pm

Tryphon wrote:
TheSegaDude wrote:...

What do you think I missed?


No idea. I didn't even know that the patch was to be applied to the whole ISO, which is, I think, a bad idea : there should be one patch per modified file in the disc.

Try this :

* open the prepatched ISO in your favorite ISO editor
* extract the whole file structure to your HDD
* with your favorite ISO editor, make an ISO from these files and burn it

There may be special settings when burning a file structure to a PS2 CD, I absolutely don't know and have no mean to test. Maybe someone here is more competent than me on this topic.


Thanks for the suggestion. I'll give it a go and dig into this a bit deeper.
Sega Dude
http://retromegabit.com
User avatar
TheSegaDude
Locusta
Locusta
 
Posts: 64
Joined: Sun Sep 23, 2012 3:10 pm
Location: Canada

Re: Phantasy Star Generation 2: English Translation

Postby Blaw- » Sat Nov 07, 2015 8:57 am

Tryphon wrote:
TheSegaDude wrote:...

What do you think I missed?


No idea. I didn't even know that the patch was to be applied to the whole ISO, which is, I think, a bad idea : there should be one patch per modified file in the disc.

Try this :

* open the prepatched ISO in your favorite ISO editor
* extract the whole file structure to your HDD
* with your favorite ISO editor, make an ISO from these files and burn it

There may be special settings when burning a file structure to a PS2 CD, I absolutely don't know and have no mean to test. Maybe someone here is more competent than me on this topic.


It's not really a problem, the ISO you can found on the web is exactly the same as the one you get if you rip the original disc so it's pretty weird, especially if he ripped his own disc. I had planned with someone else a patcher who would directly create a prepatched iso from the original disc (without requiring to make an iso) but it never got finished (there was a bug and it wasn't fixed in time for the french release so I switched to Xdelta patches).

Not to mention PSCave offer a prepatched iso, so the patch is not really useful (except to distribute it on websites where full ISO aren't tolerated).

So for people who have problem to use the patch, just download the prepatched iso from the website : http://www.pscave.com/psg2/download/PSGEN2-beta_0_8.rar

Just for information, my ISO size is 107 999 136.

About the crash with a CD, maybe it come from the LBA? I have a program which can recreate the ISO with the good lba, dunno if it would change something (but I used it on the french version, and some peoples still got some crashs so... But all the people who got a crash with the french version were using a modchip, when the PS2 I used for the tests didn't had any modchip, the USB Key loading program was a software thing).
Blaw-
Scorpius
Scorpius
 
Posts: 322
Joined: Mon Nov 12, 2012 11:48 pm

Re: Phantasy Star Generation 2: English Translation

Postby Tryphon » Sat Nov 07, 2015 7:56 pm

Je m'explique en Français, c'est plus simple.

Je suis sûr à 99,999% que le jeu hacké n'a aucun bug. Soit les crashs proviennent du modchip, soit du CD.

Si les crashs proviennent du modchip, il n'y a pas de raison que ça le fasse avec nos traductions, et pas avec d'autres disques (par exemple l'ISO originelle). Donc ça se saurait. Peut-être d'ailleurs que ça se sait, il faudrait demander à des spécialistes de la PS2.

Donc je pense que le problème vient de notre iso. Une iso est une image complète du CD, elle ne contient pas que les fichiers, mais aussi comme tu dis la LBA, ainsi que des données entre les secteurs du disque (codes correcteurs notamment, qui permettent de vérifier que les données ont été bien lues, et de corriger celles qui l'ont mal été dans certaines conditions). Il est possible que les spécifications des CD-ROM PS2 soient légèrement différentes de celles des CD-ROM classiques. À la base, c'est pour ça qu'on avait choisi Ultraiso, on pouvait modifier des fichiers dans l'ISO sans toucher aux autres réglages.

Du coup, ça peut valoir le coup que d'autres utilisateurs utilisent un autre programme pour recréer l'ISO à partir des fichiers. On en trouvera peut-être un avec lequel on n'aura plus de crashs. C'est ce que je proposais à Segadude.

Sinon, rien à voir, mais ton soft qui lit les clé USB, ça marche avec n'importe quelle PS2 ? et ça marche avec n'importe quel jeu ?
Tryphon
Scorpius
Scorpius
 
Posts: 357
Joined: Wed Mar 28, 2012 11:29 pm

Re: Phantasy Star Generation 2: English Translation

Postby Blaw- » Sat Nov 07, 2015 9:23 pm

Oui, ça fonctionne avec n'importe quel PS2, pour les jeux, quelques rares jeux ne fonctionnent pas.

Mais comme je le disais, le LBA a été restauré dans le patch FR et les spécifications ont été conservés, ce qui doit d'ailleurs expliquer pourquoi le patch est plus gros (5 Mo contre 1 Mo pour l'anglais) et pourtant, il y a quand même eu des gens en FR (avec un modchip) qui ont eu des crashs.

Pour l'iso originelle, quelqu'un a testé de copier le disque et de jouer avec la copie ? Car jouer avec le disque original ou une copie du disque n'est pas exactement la même chose (dans le cas d'un jeu avec une protection, même si ici, je ne pense pas que ce soit el cas), l'original fonctionnerait alors que la copie non.

Car mon ISO FR n'a jamais été reconstruit avec "UltraIso" perso, je le reconstruit avec un script LUA que voici :

Code: Select all
------------------
-- misc functions --
------------------

function extract_file(source, dest, mode)
    if (mode == nil) then
   source = cdfile(source)
    else
   source = cdfile(source, mode)
    end
    dest = Output(dest)
    source:copyto(dest)
end

function insert_file(source, dest, mode)
    if (type(source) == "string") then
        source = Input(source)
    end
    if (type(dest) == "string") then
   dest = findpath(dest)
    end
    if (mode == nil) then
   writefile(source, -1, dest.Sector)
    else
   writefile(source, -1, dest.Sector, mode)
    end
end

function display(inp, n)
    local i
    if (type(inp) == "string") then
        inp = Input(inp)
    elseif (type(inp) ~= "table") then
        error("Display needs a string or an Input object")
    end
   
    i = 0
   
    while(not inp:isclosed()) do
   i = i + 1
        print(inp:read())
   if ((n ~= nil) and (i >= n)) then
       return
   end
    end
end

function pchar(n)
    if (not ((n >= 32) and (n <= 127))) then
        n = 46 -- aka '.' or 0x2e
    end
    return hex(n, "%c")
end

function hexdump(inp, from, to, width)
    local size, nlines, remaining, data_array, line, byte, outstring
   
    if (type(inp) == "string") then
        inp = Input(inp)
    elseif (type(inp) ~= "table") then
        error("Hexdump needs a string or an Input object")
    end
   
    size = inp:getsize()

    if (from == nil) then
        from = 0
    end
   
    if (to == nil) then
        to = size
    end
   
    if (to > size) then
        to = size
    end
   
    size = to - from
   
    if (width == nil) then
        width = 16
    end
   
    nlines = math.floor(size / width)
    remaining = math.mod(size, width)
    inp:seek(from)
    data_array = inp:read(size)
   
    for line = 0, nlines - 1, 1 do
        outstring = hex(line * width + from, "%08x   ")
        for byte = 0, width - 1, 1 do
            outstring = outstring .. hex(data_array[line * 16 + byte]) .. " "
        end
        outstring = outstring .. "  "
        for byte = 0, width - 1, 1 do
            outstring = outstring .. pchar(data_array[line * 16 + byte])
        end
        print(outstring)
    end
   
    if (remaining == 0) then
        return
    end
   
    outstring = hex(nlines * width + from, "%08x   ");
    for byte = 0, remaining - 1, 1 do
        outstring = outstring .. hex(data_array[nlines * 16 + byte]) .. " "
    end
    for byte = remaining + 1, width - 1, 1 do
        outstring = outstring .. "   "
    end
    outstring = outstring .. "  "
    for byte = 0, remaining - 1, 1 do
        outstring = outstring .. pchar(data_array[nlines * 16 + byte])
    end

    print(outstring)
end


--------------------------
-- cdutil object wrappers --
--------------------------

function check_cdutil()
    if (cdutil == nil) then error "cdutil object non existant" end
end

function cdfile(arg1, arg2, arg3, arg4)   
    local cdutil_implied = false
   
    if ((type(arg1) ~= "table") or (arg1.cdfile == nil)) then
   check_cdutil()
        cdutil_implied = true
   if (type(arg1) == "string") then
       arg1 = findpath(arg1)
   end
    else
   if (type(arg2) == "string") then
       arg2 = findpath(arg2)
   end
    end
   
    if ((arg2 == nil) and (arg3 == nil) and (arg4 == nil)) then
        return cdutil:cdfile(arg1)
    elseif ((arg3 == nil) and (arg4 == nil)) then
        if (cdutil_implied) then
            return cdutil:cdfile(arg1, arg2)
        else
            return arg1:cdfile(arg2)
        end
    elseif (arg4 == nil) then
        if (cdutil_implied) then
            return cdutil:cdfile(arg1, arg2, arg3)
        else
            return arg1:cdfile(arg2, arg3)
        end
    else
        return arg1:cdfile(arg2, arg3, arg4)
    end
end

function setisow(iso_w)
    check_cdutil()
    return cdutil:setisow(iso_w)
end

function guessmode(sect)
    check_cdutil()
    if (sect == nil) then
        return cdutil:guessmode()
    else
        return cdutil:guessmode(sect)
    end
end

function sectorseek(sect)
    check_cdutil()
    return cdutil:sectorseek(sect)
end

function readsector(sect, mode)
    check_cdutil()
    if (sect == nil) then
        return cdutil:readsector()
    elseif (mode == nil) then
        return cdutil:readsector(sect)
    else
        return cdutil:readsector(sect, mode)
    end
end

function readdatas(size, sector, mode)
    check_cdutil()
    if (sect == nil) then
        return cdutil:readdatas(size)
    elseif (mode == nil) then
        return cdutil:readdatas(size, sect)
    else
        return cdutil:readdatas(size, sect, mode)
    end
end

function readfile(handle, size, sector, mode)
    check_cdutil()
    if (sect == nil) then
        return cdutil:readfile(handle, size)
    elseif (mode == nil) then
        return cdutil:readfile(handle, size, sect)
    else
        return cdutil:readfile(handle, size, sect, mode)
    end
end

function writesector(array, sector, mode)
    check_cdutil()
    if (sector == nil) then
        return cdutil:writesector(array, sector)
    elseif (mode == nil) then
        return cdutil:writesector(array, sector, mode)
    end
end

function writedatas(array, size, sector, mode)
    check_cdutil()
    if (sector == nil) then
        return cdutil:writedatas(array, size)
    elseif (mode == nil) then
        return cdutil:writedatas(array, size, sector)
    else
        return cdutil:writedatas(array, size, sector, mode)
    end
end

function writefile(handle, size, sector, mode)
    check_cdutil()
    if (size == nil) then
        return cdutil:writefile(handle)
    elseif (sector == nil) then
        return cdutil:writefile(handle, size)
    elseif (mode == nil) then
        return cdutil:writefile(handle, size, sector)
    else
        return cdutil:writefile(handle, size, sector, mode)
    end
end

function findpath(path)
    check_cdutil()
    if (findpath == nil) then
   return cdutil:findpath "/"
    else
   return cdutil:findpath(path)
    end
end

function findparent(path)
    check_cdutil()
    return cdutil:findparent(path)
end

function finddirectory(dir, path)
    check_cdutil()
    return cdutil:finddirectory(dir, path)
end


-----------------------
-- iso object wrappers --
-----------------------

function check_iso()
    if (iso == nil) then error "iso object non existant" end
end

function foreword(lcdutil)
    check_iso()
    if ((lcdutil == nil) and (cdutil == nil)) then error "cdutil object non existant" end
    if (lcdutil == nil) then
        return iso:foreword(cdutil)
    else
        return iso:foreword(lcdutil)
    end
end

function foreword_handle(handle, mode)
    check_iso()
    if (mode == nil) then
        return iso:foreword_handle(handle)
    else
        return iso:foreword_handle(handle, mode)
    end
end

function foreword_array(array, mode)
    check_iso()
    if (mode == nil) then
        return iso:foreword_array(array)
    else
        return iso:foreword_array(array, mode)
    end
end

function getdispsect()
    check_iso()
    return iso:getdispsect()
end

function putfile(handle, mode, sector)
    check_iso()
    if (mode == nil) then
        iso:putfile(handle)
    elseif (sector == nil) then
        iso:putfile(handle, mode)
    else
        iso:putfile(handle, mode, sector)
    end
end

function putdatas(array, size, mode, sector)
    check_iso()
    if (mode == nil) then
        iso:putdatas(array, size)
    elseif (sector == nil) then
        iso:putdatas(array, size, mode)
    else
        iso:putdatas(array, size, mode, sector)
    end
end

function createsector(array, mode, sector)
    check_iso()
    if (mode == nil) then
        iso:createsector(array)
    elseif (sector == nil) then
        iso:createsector(array, mode)
    else
        iso:createsector(array, mode, sector)
    end
end

function setEOF()
    check_iso()
    iso:setEOF()
end

function clearEOF()
    check_iso()
    iso:clearEOF()
end

function setbasics(pvd, rootsize, ptsize, nvd, rootsect)
    check_iso()
    if (rootsize == nil) then
        iso:setbasics(pvd)
    elseif (ptsize == nil) then
        iso:setbasics(pvd, rootsize)
    elseif (nvd == nil) then
        iso:setbasics(pvd, rootsize, ptsize)
    elseif (rootsect) then
        iso:setbasics(pvd, rootsize, ptsize, nvd)
    else
        iso:setbasics(pvd, rootsize, ptsize, nvd, rootsect)
    end
end

function createdir(dirtree, name, size, direntry, mode)
    check_iso()
    if (size == nil) then
        iso:createdir(dirtree, name)
    elseif (mode == nil) then
        iso:createdir(dirtree, name, size, direntry)
    else
        iso:createdir(dirtree, name, size, direntry, mode)
    end
end

function createfile(dirtree, name, size, direntry, mode)
    check_iso()
    if (mode == nil) then
        iso:createfile(dirtree, name, size, direntry)
    else
        iso:createfile(dirtree, name, size, direntry, mode)
    end
end

function copydir(dirtree, cdutils, direntry, mode)
    check_iso()
    if (mode == nil) then
        iso:copydir(dirtree, cdutils, direntry)
    else
        iso:copydir(dirtree, cdutils, direntry, mode)
    end
end

function close(cuefile, mode, nsectors)
    check_iso()
    if (cuefile == nil) then
        iso:close()
    elseif (mode == nil) then
        iso:close(cuefile)
    elseif (nsectors == nil) then
        iso:close(cuefile, mode)
    else
        iso:close(cuefile, mode, nsectors)
    end
end


Ou alors, c'est toi qui avait recrée l'iso final qui a servi pour créer le patch FR ? Je ne me souviens plus trop. Si c'est le cas, ça pourrait peut petre expliquer le problème (je pensais que c'était moi qui l'avait fait, mais je peux me tromper).Mes patchs de tests ont toujours été créés avec ce script personnellement (et comme les ISOs que tu m'as envoyé ont été testé sur une clé USB, le fonctionnement n'est peut être pas le même/aussi tatillon qu'un disque original).

Code: Select all
lua-interface.exe -a "ISOLua.paq" -e "insert('CD-PS', '../../original/PSGEN2-JP.ISO', '../../iso/', '../../output/PSGEN2-RC2-V2.iso', 'ISOLuaList.lua')" ISOLua.lua


Et le contenu du fichier "ISOLuaList.lua" (qui restaure l'ordre original des LBA) :

Code: Select all
ISOLuaList = {
   { dirname  = "MODULE", sector = 23, nb_sector = 1 },
   { filename = "SYSTEM.CNF", sector = 24 },
   { filename = "SLPM_625.53", sector = 25 },
   { filename = "MAPDATA.DAT", sector = 977 },
   { filename = "EVENT.DAT", sector = 13848 },
   { filename = "BTLDAT.DAT", sector = 18155 },
   { filename = "BTLSYS.DAT", sector = 26620 },
   { filename = "MODULE/CDVDSTM.IRX", sector = 30859 },
   { filename = "MODULE/EZMIDI.IRX", sector = 30872 },
   { filename = "MODULE/IOPRP271.IMG", sector = 30879 },
   { filename = "MODULE/LIBSD.IRX", sector = 31010 },
   { filename = "MODULE/MCMAN.IRX", sector = 31024 },
   { filename = "MODULE/MCSERV.IRX", sector = 31071 },
   { filename = "MODULE/MODHSYN.IRX", sector = 31075 },
   { filename = "MODULE/MODMIDI.IRX", sector = 31105 },
   { filename = "MODULE/PADMAN.IRX", sector = 31116 },
   { filename = "MODULE/SDRDRV.IRX", sector = 31138 },
   { filename = "MODULE/SIO2MAN.IRX", sector = 31142 },
   { filename = "SOUND.DAT", sector = 31146 },
   { filename = "MONDAT.DAT", sector = 35715 },
   { filename = "MODULE/MSIS_IOP.IRX", sector = 45752 },
   { filename = "TRADUCTION_RC2.TXT", sector = 45768 },
}


Si c'est toi qui a créé l'iso FR qui a servi pour créer mes patchs, dans ce cas, je pourrais toujours tenter de créer moi-même l'iso de la traduction anglaise, et voir si ça bugge toujours ou non.
Last edited by Blaw- on Sun Nov 08, 2015 1:27 am, edited 1 time in total.
Blaw-
Scorpius
Scorpius
 
Posts: 322
Joined: Mon Nov 12, 2012 11:48 pm

Re: Phantasy Star Generation 2: English Translation

Postby Tryphon » Sat Nov 07, 2015 10:49 pm

Je ne sais pas qui a créé l'ISO finale. Moi j'en ai compilé une dernière que j'ai envoyée à Kyence (faite avec Ultraiso) et quelques jours plus tard il y en avait une dispo ici. Je ne sais pas si c'est celle que j'ai envoyée ou si elle a été recréée à partir des fichiers d'icelle.

De ce que j'ai compris, Segadude dit avoir joué avec une copie de l'original, sans crash. Et je crois qu'il n'est pas le seul. Donc je pense qu'il y a bien un pb avec nos isos. Mais je suis quasi-sûr que ça ne vient pas du code.

Je pense qu'il nous faudrait l'aide de spécialistes de la PS2. Il se peut que ce soit un problème connu. Je vais peut-être poster sur rhdn, ou sur un forum plus spécialisé si on m'en indique un.
Tryphon
Scorpius
Scorpius
 
Posts: 357
Joined: Wed Mar 28, 2012 11:29 pm

Re: Phantasy Star Generation 2: English Translation

Postby DLLSAWC » Sat Nov 07, 2015 11:39 pm

Thank you all for finishing this translation! I'm sorry in advance if this isn't the right spot to post this but I'm having difficulties with the item creation. It seems except on one occasion, even if I have Rudo and Kain on creation with no one else they keep making antidotes. I did 20 battles and got a steel scale but other than that, after 10 battles they create an antidote 90% of the time. It doesn't matter who is in my party. Not sure if this is how it's supposed to be or what. I have read the item creation guide several times. Thanks in advance for a response.
DLLSAWC
Pinchant
Pinchant
 
Posts: 2
Joined: Sat Nov 07, 2015 11:32 pm

Re: Phantasy Star Generation 2: English Translation

Postby Blaw- » Sun Nov 08, 2015 1:02 am

Tryphon wrote:Je ne sais pas qui a créé l'ISO finale. Moi j'en ai compilé une dernière que j'ai envoyée à Kyence (faite avec Ultraiso) et quelques jours plus tard il y en avait une dispo ici. Je ne sais pas si c'est celle que j'ai envoyée ou si elle a été recréée à partir des fichiers d'icelle.

De ce que j'ai compris, Segadude dit avoir joué avec une copie de l'original, sans crash. Et je crois qu'il n'est pas le seul. Donc je pense qu'il y a bien un pb avec nos isos. Mais je suis quasi-sûr que ça ne vient pas du code.

Je pense qu'il nous faudrait l'aide de spécialistes de la PS2. Il se peut que ce soit un problème connu. Je vais peut-être poster sur rhdn, ou sur un forum plus spécialisé si on m'en indique un.


Là, je parlais de la traduction FR, savoir si c'est toi qui a créé l'iso ou moi, vu qu'il y a aussi eu des reports similaires avec la trad FR.

Edit : Dans le topic RC2 de notre forum, tu postes un lien qui indique "nouvelle version ici" donc visiblement, c'est toi qui créeait les isos. Je vais essayer de créer moi-même l'iso anglais, puis le poster ici si des gens veulent tester, et voir si ça règle le problème ou pas (si ça le réglait, je referais également une version FR).

Edit 2 : I compiled a new ISO version, it'll be ready in a few minutes, I'll post a new message when it will. I can't promise anything but it might fix the random crash.
Blaw-
Scorpius
Scorpius
 
Posts: 322
Joined: Mon Nov 12, 2012 11:48 pm

Re: Phantasy Star Generation 2: English Translation

Postby Blaw- » Sun Nov 08, 2015 1:49 am

http://www.hiei-tf.fr/PSGEN2-BETA-USA-P ... SH-FIX.zip

People who have random crashs should test this version.

I can't promise anything but it might fix the problem.

So, if some people can test this new version and make us some reports if it fix the random crashs or not on their PS2, it would be nice.
Last edited by Blaw- on Sun Nov 08, 2015 6:12 am, edited 3 times in total.
Blaw-
Scorpius
Scorpius
 
Posts: 322
Joined: Mon Nov 12, 2012 11:48 pm

Re: Phantasy Star Generation 2: English Translation

Postby UniqueUserName » Sun Nov 08, 2015 1:58 am

The last grammatical error I've found...
When you find the Maurea Tree and Consult, the caption says "Should we should over to Hiram's Lab?"
should we should? lmao.

Runehasa wrote:Does anyone have a save file right after or before neifirst with all of the requirements met to revive nei?

Edit - Also I need one that isnt hacked or maxed out


Runehasa- I have a backup save that isn't maxed or hacked... It is an OPL virtual memory card savefile from when I resurrected Nei using this translated version. It has save files including the original 0: 0: 0 clear data, also an immediately before Neifirst encounter save, and an immediately after Neifirst defeat save. I can also include the CFG file to match the VMC so you don't have to manually reconfigure any settings. However, when I tried to upload it here for you I received the message "The extension bin is not allowed." Someone please let me know how to proceed with this?


TheSegaDude wrote:I've encountered a bug that is exactly the same as another user has posted here.

I don't think I've even clocked in two hours of game play yet and three times now my game has frozen on the after combat screen showing "INDIVIDUAL'S EXPERIENCE".
The music keeps playing but everything is frozen. I have to reboot my PS2. I am playing on an modded PS2.

Since I can only save in town this is a real show stopper.


If you have access to a 50000 series Ps2... I only received 5 of those occurrences throughout an entire playthrough on a scph-50001 model... When I used a scph-30001 model with an identical setup, I received the errors very regularly including a crippling problem in the Biosystems Lab where it made the level unpassable. I gave up after the eighth freeze up trying to get the Recorder, nearly 3 hours I'll never get back. After that I switched back to the 50001 model and played the rest of the game with only one freeze up right before the Dark Falz battle. I hope that helps.


Tryphon wrote:I'd like to have reports from people encountering crashes, with the following informations :

1) hardware (PS2 model, modded, name of mod)
2) device used (CD ? DVD ? USB ? size ?)
3) ISO origin (prepatched ? built from scratch ?)


1- Ps2 scph-50001 (5 freezes/1 freeze) + scph-30001 (uncountable freezes), soft mod, FhdB/OPL
2- Internal HDD, 1TB, ISO
3- An Origianl Japanese ISO, where translated files were replaced in Ultra ISO, using this site's PREpatched ISO


Runehasa wrote:Ive had no crashes running in on emulator or PCSX2. My only issue is I dont really want to proceed without Nei being revived. Played it through twice up to that pt but just cant seem to satisfy all the requirements


Nei resurrected for me on the first try... Some easily overlooked advice for you...
When you get Teim, talk to everyone in every town and examine all "destroyed buildings" in her home town. Also, repeat this process after she leaves your party.
Examine all bodies found on the floor (her kidnappers), there is more than one.
At Roron Dump talk to all Motavians several times using Consult before and after each one, and after receiving the Scooter but before touching it talk to the ALL one more time, including the ones in the North section of Roron.
Don't forget to pay for the Polymetryl twice, by giving it to the wrong Motavian first and getting the "no backsies" message and see the few different messages of the guy that sells it to you.
Also, some NPC's dialog changes after certain events talk to every person in every town after something major happens. Especially Phllip and Nanette's Grandfather... there was a few messages that only appeared at weird intervals... like before and after you check the broken bridge you get two different kinds of "no no" messages before you get sent to Kueris.
Before going to meet NeiFirst make one last town run and talk with everyone with every character you have, in your home, two by two. That's how I got the necklace finally... and Phillip's further weather reports after that lol.
I hope one of those was a forehead slapper for you and you get it this time.
Good Luck!

EDIT: SAVEFILE ATTACHED
Attachments
PSG2- before and after NeiFirst.7z
(34.82 KiB) Downloaded 291 times
Last edited by UniqueUserName on Sun Nov 08, 2015 11:23 pm, edited 1 time in total.
Image
(+[__]·:·) _____ [==_═══:]
_ P S P _________ P S 2 _
User avatar
UniqueUserName
Locusta
Locusta
 
Posts: 32
Joined: Fri Oct 23, 2015 10:12 pm
Location: New England, USA

Re: Phantasy Star Generation 2: English Translation

Postby Blaw- » Sun Nov 08, 2015 6:11 am

You can zip your save to be able to join it to your message.

Or if you can't, just upload it on another file hosting (Mega or another website like that).
Blaw-
Scorpius
Scorpius
 
Posts: 322
Joined: Mon Nov 12, 2012 11:48 pm

Re: Phantasy Star Generation 2: English Translation

Postby Zombulator » Sun Nov 08, 2015 10:45 am

Blaw- wrote:http://www.hiei-tf.fr/PSGEN2-BETA-USA-POTENTIAL-CRASH-FIX.zip

People who have random crashs should test this version.

I can't promise anything but it might fix the problem.

So, if some people can test this new version and make us some reports if it fix the random crashs or not on their PS2, it would be nice.


Hello! I found this thread with a google image search as I was also having problems with my game hanging on the battle results screen. I downloaded this new version you linked, and wandered around the first dungeon for about 30 mins before the crash happened again and I lost all the work!
I am playing on my soft-modded PS2 using uLaunch and HDLOADER. I was able to play through the translated Generation 1 iso albeit with some serious graphical glitches. Thanks for the hard work, I hope you guys can figure this crashing thing out.
Zombulator
Pinchant
Pinchant
 
Posts: 1
Joined: Sun Nov 08, 2015 10:36 am

Re: Phantasy Star Generation 2: English Translation

Postby The PS Logo » Sun Nov 08, 2015 12:12 pm

Has anyone tested what would happen if Rudo/Rudger was given TP?

Would defeating the Army Eyes still break the game?

And finally...
Tryphon wrote:Je m'explique en Français, c'est plus simple.

Je suis sûr à 99,999% que le jeu hacké n'a aucun bug. Soit les crashs proviennent du modchip, soit du CD.

Si les crashs proviennent du modchip, il n'y a pas de raison que ça le fasse avec nos traductions, et pas avec d'autres disques (par exemple l'ISO originelle). Donc ça se saurait. Peut-être d'ailleurs que ça se sait, il faudrait demander à des spécialistes de la PS2.

Donc je pense que le problème vient de notre iso. Une iso est une image complète du CD, elle ne contient pas que les fichiers, mais aussi comme tu dis la LBA, ainsi que des données entre les secteurs du disque (codes correcteurs notamment, qui permettent de vérifier que les données ont été bien lues, et de corriger celles qui l'ont mal été dans certaines conditions). Il est possible que les spécifications des CD-ROM PS2 soient légèrement différentes de celles des CD-ROM classiques. À la base, c'est pour ça qu'on avait choisi Ultraiso, on pouvait modifier des fichiers dans l'ISO sans toucher aux autres réglages.

Du coup, ça peut valoir le coup que d'autres utilisateurs utilisent un autre programme pour recréer l'ISO à partir des fichiers. On en trouvera peut-être un avec lequel on n'aura plus de crashs. C'est ce que je proposais à Segadude.

Sinon, rien à voir, mais ton soft qui lit les clé USB, ça marche avec n'importe quelle PS2 ? et ça marche avec n'importe quel jeu ?


Blaw- wrote:Oui, ça fonctionne avec n'importe quel PS2, pour les jeux, quelques rares jeux ne fonctionnent pas.

Mais comme je le disais, le LBA a été restauré dans le patch FR et les spécifications ont été conservés, ce qui doit d'ailleurs expliquer pourquoi le patch est plus gros (5 Mo contre 1 Mo pour l'anglais) et pourtant, il y a quand même eu des gens en FR (avec un modchip) qui ont eu des crashs.

Pour l'iso originelle, quelqu'un a testé de copier le disque et de jouer avec la copie ? Car jouer avec le disque original ou une copie du disque n'est pas exactement la même chose (dans le cas d'un jeu avec une protection, même si ici, je ne pense pas que ce soit el cas), l'original fonctionnerait alors que la copie non.

Car mon ISO FR n'a jamais été reconstruit avec "UltraIso" perso, je le reconstruit avec un script LUA que voici :

Code: Select all
------------------
-- misc functions --
------------------

function extract_file(source, dest, mode)
    if (mode == nil) then
   source = cdfile(source)
    else
   source = cdfile(source, mode)
    end
    dest = Output(dest)
    source:copyto(dest)
end

function insert_file(source, dest, mode)
    if (type(source) == "string") then
        source = Input(source)
    end
    if (type(dest) == "string") then
   dest = findpath(dest)
    end
    if (mode == nil) then
   writefile(source, -1, dest.Sector)
    else
   writefile(source, -1, dest.Sector, mode)
    end
end

function display(inp, n)
    local i
    if (type(inp) == "string") then
        inp = Input(inp)
    elseif (type(inp) ~= "table") then
        error("Display needs a string or an Input object")
    end
   
    i = 0
   
    while(not inp:isclosed()) do
   i = i + 1
        print(inp:read())
   if ((n ~= nil) and (i >= n)) then
       return
   end
    end
end

function pchar(n)
    if (not ((n >= 32) and (n <= 127))) then
        n = 46 -- aka '.' or 0x2e
    end
    return hex(n, "%c")
end

function hexdump(inp, from, to, width)
    local size, nlines, remaining, data_array, line, byte, outstring
   
    if (type(inp) == "string") then
        inp = Input(inp)
    elseif (type(inp) ~= "table") then
        error("Hexdump needs a string or an Input object")
    end
   
    size = inp:getsize()

    if (from == nil) then
        from = 0
    end
   
    if (to == nil) then
        to = size
    end
   
    if (to > size) then
        to = size
    end
   
    size = to - from
   
    if (width == nil) then
        width = 16
    end
   
    nlines = math.floor(size / width)
    remaining = math.mod(size, width)
    inp:seek(from)
    data_array = inp:read(size)
   
    for line = 0, nlines - 1, 1 do
        outstring = hex(line * width + from, "%08x   ")
        for byte = 0, width - 1, 1 do
            outstring = outstring .. hex(data_array[line * 16 + byte]) .. " "
        end
        outstring = outstring .. "  "
        for byte = 0, width - 1, 1 do
            outstring = outstring .. pchar(data_array[line * 16 + byte])
        end
        print(outstring)
    end
   
    if (remaining == 0) then
        return
    end
   
    outstring = hex(nlines * width + from, "%08x   ");
    for byte = 0, remaining - 1, 1 do
        outstring = outstring .. hex(data_array[nlines * 16 + byte]) .. " "
    end
    for byte = remaining + 1, width - 1, 1 do
        outstring = outstring .. "   "
    end
    outstring = outstring .. "  "
    for byte = 0, remaining - 1, 1 do
        outstring = outstring .. pchar(data_array[nlines * 16 + byte])
    end

    print(outstring)
end


--------------------------
-- cdutil object wrappers --
--------------------------

function check_cdutil()
    if (cdutil == nil) then error "cdutil object non existant" end
end

function cdfile(arg1, arg2, arg3, arg4)   
    local cdutil_implied = false
   
    if ((type(arg1) ~= "table") or (arg1.cdfile == nil)) then
   check_cdutil()
        cdutil_implied = true
   if (type(arg1) == "string") then
       arg1 = findpath(arg1)
   end
    else
   if (type(arg2) == "string") then
       arg2 = findpath(arg2)
   end
    end
   
    if ((arg2 == nil) and (arg3 == nil) and (arg4 == nil)) then
        return cdutil:cdfile(arg1)
    elseif ((arg3 == nil) and (arg4 == nil)) then
        if (cdutil_implied) then
            return cdutil:cdfile(arg1, arg2)
        else
            return arg1:cdfile(arg2)
        end
    elseif (arg4 == nil) then
        if (cdutil_implied) then
            return cdutil:cdfile(arg1, arg2, arg3)
        else
            return arg1:cdfile(arg2, arg3)
        end
    else
        return arg1:cdfile(arg2, arg3, arg4)
    end
end

function setisow(iso_w)
    check_cdutil()
    return cdutil:setisow(iso_w)
end

function guessmode(sect)
    check_cdutil()
    if (sect == nil) then
        return cdutil:guessmode()
    else
        return cdutil:guessmode(sect)
    end
end

function sectorseek(sect)
    check_cdutil()
    return cdutil:sectorseek(sect)
end

function readsector(sect, mode)
    check_cdutil()
    if (sect == nil) then
        return cdutil:readsector()
    elseif (mode == nil) then
        return cdutil:readsector(sect)
    else
        return cdutil:readsector(sect, mode)
    end
end

function readdatas(size, sector, mode)
    check_cdutil()
    if (sect == nil) then
        return cdutil:readdatas(size)
    elseif (mode == nil) then
        return cdutil:readdatas(size, sect)
    else
        return cdutil:readdatas(size, sect, mode)
    end
end

function readfile(handle, size, sector, mode)
    check_cdutil()
    if (sect == nil) then
        return cdutil:readfile(handle, size)
    elseif (mode == nil) then
        return cdutil:readfile(handle, size, sect)
    else
        return cdutil:readfile(handle, size, sect, mode)
    end
end

function writesector(array, sector, mode)
    check_cdutil()
    if (sector == nil) then
        return cdutil:writesector(array, sector)
    elseif (mode == nil) then
        return cdutil:writesector(array, sector, mode)
    end
end

function writedatas(array, size, sector, mode)
    check_cdutil()
    if (sector == nil) then
        return cdutil:writedatas(array, size)
    elseif (mode == nil) then
        return cdutil:writedatas(array, size, sector)
    else
        return cdutil:writedatas(array, size, sector, mode)
    end
end

function writefile(handle, size, sector, mode)
    check_cdutil()
    if (size == nil) then
        return cdutil:writefile(handle)
    elseif (sector == nil) then
        return cdutil:writefile(handle, size)
    elseif (mode == nil) then
        return cdutil:writefile(handle, size, sector)
    else
        return cdutil:writefile(handle, size, sector, mode)
    end
end

function findpath(path)
    check_cdutil()
    if (findpath == nil) then
   return cdutil:findpath "/"
    else
   return cdutil:findpath(path)
    end
end

function findparent(path)
    check_cdutil()
    return cdutil:findparent(path)
end

function finddirectory(dir, path)
    check_cdutil()
    return cdutil:finddirectory(dir, path)
end


-----------------------
-- iso object wrappers --
-----------------------

function check_iso()
    if (iso == nil) then error "iso object non existant" end
end

function foreword(lcdutil)
    check_iso()
    if ((lcdutil == nil) and (cdutil == nil)) then error "cdutil object non existant" end
    if (lcdutil == nil) then
        return iso:foreword(cdutil)
    else
        return iso:foreword(lcdutil)
    end
end

function foreword_handle(handle, mode)
    check_iso()
    if (mode == nil) then
        return iso:foreword_handle(handle)
    else
        return iso:foreword_handle(handle, mode)
    end
end

function foreword_array(array, mode)
    check_iso()
    if (mode == nil) then
        return iso:foreword_array(array)
    else
        return iso:foreword_array(array, mode)
    end
end

function getdispsect()
    check_iso()
    return iso:getdispsect()
end

function putfile(handle, mode, sector)
    check_iso()
    if (mode == nil) then
        iso:putfile(handle)
    elseif (sector == nil) then
        iso:putfile(handle, mode)
    else
        iso:putfile(handle, mode, sector)
    end
end

function putdatas(array, size, mode, sector)
    check_iso()
    if (mode == nil) then
        iso:putdatas(array, size)
    elseif (sector == nil) then
        iso:putdatas(array, size, mode)
    else
        iso:putdatas(array, size, mode, sector)
    end
end

function createsector(array, mode, sector)
    check_iso()
    if (mode == nil) then
        iso:createsector(array)
    elseif (sector == nil) then
        iso:createsector(array, mode)
    else
        iso:createsector(array, mode, sector)
    end
end

function setEOF()
    check_iso()
    iso:setEOF()
end

function clearEOF()
    check_iso()
    iso:clearEOF()
end

function setbasics(pvd, rootsize, ptsize, nvd, rootsect)
    check_iso()
    if (rootsize == nil) then
        iso:setbasics(pvd)
    elseif (ptsize == nil) then
        iso:setbasics(pvd, rootsize)
    elseif (nvd == nil) then
        iso:setbasics(pvd, rootsize, ptsize)
    elseif (rootsect) then
        iso:setbasics(pvd, rootsize, ptsize, nvd)
    else
        iso:setbasics(pvd, rootsize, ptsize, nvd, rootsect)
    end
end

function createdir(dirtree, name, size, direntry, mode)
    check_iso()
    if (size == nil) then
        iso:createdir(dirtree, name)
    elseif (mode == nil) then
        iso:createdir(dirtree, name, size, direntry)
    else
        iso:createdir(dirtree, name, size, direntry, mode)
    end
end

function createfile(dirtree, name, size, direntry, mode)
    check_iso()
    if (mode == nil) then
        iso:createfile(dirtree, name, size, direntry)
    else
        iso:createfile(dirtree, name, size, direntry, mode)
    end
end

function copydir(dirtree, cdutils, direntry, mode)
    check_iso()
    if (mode == nil) then
        iso:copydir(dirtree, cdutils, direntry)
    else
        iso:copydir(dirtree, cdutils, direntry, mode)
    end
end

function close(cuefile, mode, nsectors)
    check_iso()
    if (cuefile == nil) then
        iso:close()
    elseif (mode == nil) then
        iso:close(cuefile)
    elseif (nsectors == nil) then
        iso:close(cuefile, mode)
    else
        iso:close(cuefile, mode, nsectors)
    end
end


Ou alors, c'est toi qui avait recrée l'iso final qui a servi pour créer le patch FR ? Je ne me souviens plus trop. Si c'est le cas, ça pourrait peut petre expliquer le problème (je pensais que c'était moi qui l'avait fait, mais je peux me tromper).Mes patchs de tests ont toujours été créés avec ce script personnellement (et comme les ISOs que tu m'as envoyé ont été testé sur une clé USB, le fonctionnement n'est peut être pas le même/aussi tatillon qu'un disque original).

Code: Select all
lua-interface.exe -a "ISOLua.paq" -e "insert('CD-PS', '../../original/PSGEN2-JP.ISO', '../../iso/', '../../output/PSGEN2-RC2-V2.iso', 'ISOLuaList.lua')" ISOLua.lua


Et le contenu du fichier "ISOLuaList.lua" (qui restaure l'ordre original des LBA) :

Code: Select all
ISOLuaList = {
   { dirname  = "MODULE", sector = 23, nb_sector = 1 },
   { filename = "SYSTEM.CNF", sector = 24 },
   { filename = "SLPM_625.53", sector = 25 },
   { filename = "MAPDATA.DAT", sector = 977 },
   { filename = "EVENT.DAT", sector = 13848 },
   { filename = "BTLDAT.DAT", sector = 18155 },
   { filename = "BTLSYS.DAT", sector = 26620 },
   { filename = "MODULE/CDVDSTM.IRX", sector = 30859 },
   { filename = "MODULE/EZMIDI.IRX", sector = 30872 },
   { filename = "MODULE/IOPRP271.IMG", sector = 30879 },
   { filename = "MODULE/LIBSD.IRX", sector = 31010 },
   { filename = "MODULE/MCMAN.IRX", sector = 31024 },
   { filename = "MODULE/MCSERV.IRX", sector = 31071 },
   { filename = "MODULE/MODHSYN.IRX", sector = 31075 },
   { filename = "MODULE/MODMIDI.IRX", sector = 31105 },
   { filename = "MODULE/PADMAN.IRX", sector = 31116 },
   { filename = "MODULE/SDRDRV.IRX", sector = 31138 },
   { filename = "MODULE/SIO2MAN.IRX", sector = 31142 },
   { filename = "SOUND.DAT", sector = 31146 },
   { filename = "MONDAT.DAT", sector = 35715 },
   { filename = "MODULE/MSIS_IOP.IRX", sector = 45752 },
   { filename = "TRADUCTION_RC2.TXT", sector = 45768 },
}


Si c'est toi qui a créé l'iso FR qui a servi pour créer mes patchs, dans ce cas, je pourrais toujours tenter de créer moi-même l'iso de la traduction anglaise, et voir si ça bugge toujours ou non.


Tryphon wrote:Je ne sais pas qui a créé l'ISO finale. Moi j'en ai compilé une dernière que j'ai envoyée à Kyence (faite avec Ultraiso) et quelques jours plus tard il y en avait une dispo ici. Je ne sais pas si c'est celle que j'ai envoyée ou si elle a été recréée à partir des fichiers d'icelle.

De ce que j'ai compris, Segadude dit avoir joué avec une copie de l'original, sans crash. Et je crois qu'il n'est pas le seul. Donc je pense qu'il y a bien un pb avec nos isos. Mais je suis quasi-sûr que ça ne vient pas du code.

Je pense qu'il nous faudrait l'aide de spécialistes de la PS2. Il se peut que ce soit un problème connu. Je vais peut-être poster sur rhdn, ou sur un forum plus spécialisé si on m'en indique un.


Tryphon wrote:Je ne sais pas qui a créé l'ISO finale. Moi j'en ai compilé une dernière que j'ai envoyée à Kyence (faite avec Ultraiso) et quelques jours plus tard il y en avait une dispo ici. Je ne sais pas si c'est celle que j'ai envoyée ou si elle a été recréée à partir des fichiers d'icelle.

De ce que j'ai compris, Segadude dit avoir joué avec une copie de l'original, sans crash. Et je crois qu'il n'est pas le seul. Donc je pense qu'il y a bien un pb avec nos isos. Mais je suis quasi-sûr que ça ne vient pas du code.

Je pense qu'il nous faudrait l'aide de spécialistes de la PS2. Il se peut que ce soit un problème connu. Je vais peut-être poster sur rhdn, ou sur un forum plus spécialisé si on m'en indique un.


No offense Tryphon, Blaw, but should all that have been in the French Translation thread?
Image
User avatar
The PS Logo
Blastoid
Blastoid
 
Posts: 104
Joined: Sun Sep 09, 2007 2:10 am

Re: Phantasy Star Generation 2: English Translation

Postby Tryphon » Sun Nov 08, 2015 1:35 pm

In fact, we were talking about the English translation. But since it was technical, and we were between French locutors, it was easier for me to communicate in French (you may have noticed my English is far from fluent). Basically we said the same thing I told Segadude some messages ago. If something really new had emerged, I'd have translated it in English.

I also expressed the will to open a thread on romhacking.net board, which I did here.

It would have been better via pm that said. Sorry for the inconvenience.
Tryphon
Scorpius
Scorpius
 
Posts: 357
Joined: Wed Mar 28, 2012 11:29 pm

Re: Phantasy Star Generation 2: English Translation

Postby Runehasa » Sun Nov 08, 2015 1:48 pm

Runehasa wrote:Does anyone have a save file right after or before neifirst with all of the requirements met to revive nei?

Edit - Also I need one that isnt hacked or maxed out


Runehasa- I have a backup save that isn't maxed or hacked... It is an OPL virtual memory card savefile from when I resurrected Nei using this translated version. It has save files including the original 0: 0: 0 clear data, also an immediately before Neifirst encounter save, and an immediately after Neifirst defeat save. I can also include the CFG file to match the VMC so you don't have to manually reconfigure any settings. However, when I tried to upload it here for you I received the message "The extension bin is not allowed." Someone please let me know how to proceed with this?


That sounds like exactly what I am looking for. I would really be thankful if you could send that to me. You can Try uploading it to my google drive. https://drive.google.com/folderview?id= ... sp=sharing or if not you can likely zip it and email it to me at Runehasa@gmail.com
Runehasa
Xanafalgue
Xanafalgue
 
Posts: 26
Joined: Tue Jul 29, 2014 1:46 pm

Re: Phantasy Star Generation 2: English Translation

Postby TheSegaDude » Sun Nov 08, 2015 4:57 pm

Hi all,

Thanks for the comments on the freeze issue. I don't at all mind the French responses. I used Google to translate and I really appreciate your efforts!

Here's what I've tried since my last post.

I have not been able to apply the English patch to my own ISO of PSG2.

I then used Alcohol 120 to burn the pre-patched ISO from pscave. Alcohol 120 has a pick-list to chose what type of Disc you want to write. One of those is a profile for the Play Station 2. I was hopeful that this might do a better job than IMGBurn at writing a CD to be compliant with my PlayStation 2. But there seems to be no difference. When playing with this Alcohol 120 burn it still experiences the freeze problem after combat. (The freeze is the same; still very random. You might play for 2 minutes or 1 hour before experiencing it.)

I then used 'USB Advance' (Burned to the same cheap 'Grand & Toy' CD) to run PSG2 from a USB thumb drive on my PS2. That seems to be working. I have played for a about 2-3 hours this way with no freezes.

This seems to support the idea that the English Patch is not the problem but how the game is written to CD is.

Here are some details on my PS2:

Console SCPH-390001
Browser 1.20
CD Player .120
PlayStation Driver 1.10
DVD Player 2.12U

When I get a chance I'll open up my PS2 to find out what mod chip I have.

If anyone is interested in solving this I'm happy to do whatever tests you think might help.
Sega Dude
http://retromegabit.com
User avatar
TheSegaDude
Locusta
Locusta
 
Posts: 64
Joined: Sun Sep 23, 2012 3:10 pm
Location: Canada

PreviousNext

Return to Fan stuff

Who is online

Users browsing this forum: No registered users and 1 guest