Opened 11 years ago

Closed 11 years ago

Last modified 11 months ago

#4082 closed defect (fixed)

AmigaOS4: Saving (new games) broken/not possible anymore

Reported by: raziel- Owned by: wjp
Priority: normal Component: Port: AmigaOS4
Keywords: Cc:
Game:

Description

ScummVM 0.13.0svn (Jan 5 2009 09:42:59)
Features compiled in: Vorbis FLAC MP3 zLib MPEG2

Saving in a new slot isn't possible anymore. I get
WARNING: Can't create file 'pq1-amiga.044', game not saved!
for whatever game i tried and whatever slot i tried.

(Although the 0 slot gives another warning about
being only used for auto saves)

Strange thing is, though, that its still possible to
save in previous saved slot, that is, if there already
IS a saved game it can be overwritten. But no new
save game is created et al

Strange

All AGI based games

gcc version 4.0.2 (AmigaOS build 20051012)

Ticket imported from: #2487481. Ticket imported from: bugs/4082.

Change History (16)

comment:1 by bluegr, 11 years ago

Very strange, just tried it and it works fine for me

Are you sure that ScummVM can write to the target folder and that there is enough space available there?

comment:2 by sev-, 11 years ago

Works for me as well.

comment:3 by sev-, 11 years ago

This tracker item is pending response by the submitter; we
cannot continue processing it before that happens. As a
consequence, its status has been set to "Pending". It will
automatically revert to "Open" once a new comment is made to
this item. If no response is made within 14 days, it will
automatically be closed.

Thank you.

comment:4 by sev-, 11 years ago

Status: newpending

comment:5 by raziel-, 11 years ago

@thebluegr

If you read my initial comment, you'll see that there is no write protection
set on the save folder (anyway EVERY other game from ScummVM can save there
without problems) as it is possible to save to an already created slot.

Only NEW slots that needs to be created to be able to save refuse to do so

Latest SVN revision from today shows the same problem, sorry

comment:6 by fingolfin, 11 years ago

Status: pendingnew

comment:7 by wjp, 11 years ago

This is very puzzling. Are you really sure other engines can create new slots properly? I can see no difference in how AGI and SCUMM create a savegame.

The one thing that looks fishy is that AmigaOSFilesystemNode::getChild() tries to obtain a lock on the child. The AmigaOS reference documentation I can find is very sparse with details about failure modes, so I don't know if Lock() fails or succeeds on a non-existing file, but if it fails, that would break creating new files in the way done by the default save manager. But then it would be broken in all engines.

comment:8 by raziel-, 11 years ago

Truly sorry for both the delay and the wrong information.

My bad :-/

Of course it's broken with all engines, SCUMM refuses to
create a new save as does AGI and BASS (these i tested)

I am now in the process of going back in revisions to see
which one has the culprid. 0.12.0 (r34422) works fine and
the last i build (r34570) does not.

But maybe you already have an idea on how to fix it?

Thank you

comment:9 by wjp, 11 years ago

I _think_ it would be fixed by removing the locking code[*] in AmigaOSFilesystemNode::getChild(), but without having access to AmigaOS4 I can't say for sure. It would need testing to see if it doesn't break any subtle things anywhere.

[*] The section from the line starting with "BPTR lock = IDOS->Lock(" to the line "IDOS->Unlock(lock);", inclusive.

comment:10 by wjp, 11 years ago

Summary: AGI: Saving (new games) broken/not possible anymoreAmigaOS4: Saving (new games) broken/not possible anymore

comment:11 by raziel-, 11 years ago

That did the trick, thank you, saving in new slots works again :-)

I do get warnings from the AGI engine though, nothing fatal i think.

WARNING: FSNode::createReadStream: FSNode does not exist!
WARNING: FSNode::createReadStream: FSNode does not exist!
WARNING: FSNode::createReadStream: FSNode does not exist!

comment:12 by wjp, 11 years ago

No, those aren't fatal. (I get them too in Linux.)

Could you test this a bit more in general, just to make sure nothing subtle was broken? I feel a bit hesitant about committing this since I have no access to AmigaOS4 myself...

I was thinking of running games from a couple of engines, and listing savegames and loading/saving in a couple of engines. If that works fine, I'll commit this to trunk and the 0.13.0 branch.

comment:13 by raziel-, 11 years ago

Of course, thanks a lot for the help

AGI, HE, BASS, FotAQ and SCUMM all work fine
(tested with different games where possible)

comment:14 by wjp, 11 years ago

Thanks for testing. It's in SVN now.

comment:15 by wjp, 11 years ago

Component: Engine: AGI--Unset--
Game: AGI Fanmade
Owner: set to wjp
Resolution: fixed
Status: newclosed

comment:16 by digitall, 11 months ago

Component: --Unset--Port: AmigaOS4
Note: See TracTickets for help on using tickets.