[Back to Index]

  
[00:05] <m_kiewitz> snover: about that lsl7 issue, how fast can you get there? right from the start?
[00:06] <snover> unfortunately no, it is a ways into the game. i have a savegame. one moment.
[00:06] <m_kiewitz> i can try if it works with my localized lsl7, but i doubt it will
[00:06] <m_kiewitz> with the new saved game code, it probably could :/
[00:06] <m_kiewitz> but let me try anyway
[00:08] <snover> https://www.dropbox.com/s/aek36uqxunv7rc5/lsl7-cd.010?dl=1
[00:09] <snover> load that, click on the toilet and choose to use lime juice
[00:09] <-- TMM left irc: Ping timeout: 258 seconds
[00:10] <snover> then i think it is getting stuck on a cycler but its not totally clear to me. the affected script object is soMakeCheese
[00:11] <snover> if you `send soMakeCheese changeState 8` then it will continue, and the game is completable
[00:12] <m_kiewitz> cannot be restored :/
[00:12] <m_kiewitz> oh well...
[00:14] <snover> the room is 540, the game has a debug mode you might be able to just give yourself all the necessary inventory items
[00:15] <m_kiewitz> good idea
[00:15] <snover> i dont have a numpad so i dont think i can activate it& http://wiki.scummvm.org/index.php/SCI/Debug_Modes#Game_specific:_Leisure_Suit_Larry_7
[00:16] <snover> well i guess if i could figure out what the input data is for such an event, i could just give the game a fake event
[00:17] <snover> you need venezuelan beaver milk, salt, lime juice, and mold. just like in real life?
[00:18] <m_kiewitz> hmm debug doesn't work for me
[00:18] <m_kiewitz> maybe they removed it for localized versions
[00:18] <m_kiewitz> or maybe we do not send the right keycode
[00:18] <m_kiewitz> we should maybe add a way to easily enable debug modes
[00:18] <m_kiewitz> like emulating file existance and so on
[00:20] <m_kiewitz> i bet there is a global to enable all those keys
[00:21] <m_kiewitz> lofsa string_30ac ; "TorinDebug"
[00:21] <m_kiewitz> o_O
[00:21] <snover> lsl7 code is a descendant of torin code
[00:22] <m_kiewitz> it seems to check for a configuration option called like that
[00:22] <m_kiewitz> hmm there is code checking for autotp
[00:23] <m_kiewitz> transport into rooms?
[00:23] <snover> haha. oh, you know, it would help if i pointed scummvm at my copy of the game that i put on my disk and added the CLASSES file too
[00:23] <snover> instead of the disk image&
[00:24] <snover> autotp is used to decide whether to show the main menu or to just start a new game
[00:24] <snover> a nice little bit of positive user experience
[00:25] <m_kiewitz> ah i see
[00:26] <snover> so if you choose to start a new game, and you have CLASSES file, then the debugger is active
[00:26] <m_kiewitz> "classes" sets global 6Ah to 1
[00:26] <m_kiewitz> some TorinDebug setting does the same
[00:27] <m_kiewitz> and then it calls script 64014, "init" method somehow
[00:27] <m_kiewitz> export64014_0 = Debugger
[00:27] <m_kiewitz> tada
[00:28] <snover> so, anyway, if you just start a new game, hit ctrl+i and give yourself those ingredients, then hit ctrl+t and enter 540, then use one of the ingredients on the machine, it should hang
[00:28] <m_kiewitz> debug mode doesn't work for me (yet)
[00:28] <snover> should hang in the middle of the animation*
[00:29] <m_kiewitz> it registers itself somehow as a global handler
[00:32] <snover> oops.
[00:32] <snover> when i said ctrl, i meant alt.
[00:32] <snover> sorry!
[00:32] <m_kiewitz> snover: does it show a message for you when you press Shift-+?
[00:32] <m_kiewitz> ah
[00:32] <m_kiewitz> ahhh that worked fine
[00:32] <m_kiewitz> thx
[00:32] <m_kiewitz> wiki says press both [SHIFT] keys and the [+]
[00:33] <snover> that may be necessary when you are restoring a game or something, i dont know
[00:33] <m_kiewitz> it seems that debugger class takes all key events, when Alt is pressed
[00:33] <snover> i was able to just start a new game, give myself inventory, teleport to 540 (this is fine even during the cutscene)
[00:34] <m_kiewitz> >venezuelan beaver milk, salt, lime juice, and mold.
[00:35] <m_kiewitz> so which internal names do those have
[00:35] <snover> ioBeaverMilk, ioSalt, ioLimeJuice, ioLimeJuice
[00:35] <snover> er
[00:35] <snover> good job brain
[00:35] <snover> ioBeaverMilk, ioSalt, ioLimeJuice, ioMold
[00:36] <m_kiewitz> ok i think i have them
[00:37] <m_kiewitz> would be funny in case it works in localized lsl7
[00:37] <snover> at least it would give us somewhere to work from
[00:37] <m_kiewitz> so the machine does something and then everything is somewhat frozen, right?
[00:38] <snover> yes
[00:39] <m_kiewitz> hmm it plays a sound
[00:39] <m_kiewitz> is that sound triggering a cue?
[00:39] <-- SylvainTV left irc: Read error: Connection reset by peer
[00:39] <snover> i feel like we had this conversation before :)
[00:39] <m_kiewitz> yeah, but now I'm in the game :P
[00:40] <Lightkey> m_kiewitz  it's in the game
[00:40] <snover> it does play a sound, but iirc i checked and the cue is not sound-based
[00:40] <snover> i believe that it is cycler-based
[00:40] --> TMM joined #scummvm.
[00:40] #scummvm: mode change '+o TMM' by ChanServ!ChanServ@services.
[00:40] <m_kiewitz> have you tried the same in dosbox with max cycles?
[00:40] <m_kiewitz> maybe it's actually a script bug
[00:41] <m_kiewitz> with the debugger it should be easy to do this
[00:41] <snover> i did not check in dosbox, no
[00:42] <snover> i thnk i referenced some youtube playthrough only
[00:45] <-- |Cable| left irc: Ping timeout: 260 seconds
[00:47] <m_kiewitz> nah works fine
[00:48] <m_kiewitz> right there is something going wrong with the cycler
[00:48] <m_kiewitz> quite obviously
[01:04] <m_kiewitz> snover: looks to me like a script bug
[01:05] <m_kiewitz> the scripts call poCheeseMaker::setCycle in a really weird way on state 6
[01:05] <m_kiewitz> i think it just works by accident w/ original interpreter
[01:06] <m_kiewitz> poCheeseMake::setCycle(End, soMakeCheese, 4, soMakeCheese)
[01:06] <m_kiewitz> normally it should look like for example
[01:07] <m_kiewitz> poCheeseMaker::setCycle(CT, 9, 1, soMakeCheese)
[01:07] <m_kiewitz> will look into this in depth tomorrow
[01:07] <m_kiewitz> have to get some sleep, so that I won't miss DHL in the morning
[01:08] <snover> ok. good night!
[01:08] <m_kiewitz> bye
[01:08] <-- m_kiewitz left irc: Quit: technology isn't intrinsically good or evil. It's how it's used. Like the Death Ray.
[01:12] --> |Cable| joined #scummvm.
[01:26] <mataniko> i'm trying to find the simplest drawing use case, is it simply copyRectToScreen followed by updateScreen?
[01:27] <mataniko> to get something rendered?
[01:30] <snover> mataniko: fillScreen would probably be simpler than copyRectToScreen if literally all you want to do is render *anything*
[01:31] <mataniko> i am trying to draw more than a single color :)
[01:32] <snover> if you are drawing 8bpp then you will also need to call to set the palett
[01:32] <snover> e
[01:33] <snover> and at the risk of tell you something you already know, you would also need to start with a call to initGraphics
[01:34] <mataniko> i got that part :)
[01:39] <snover> ok. if you have any more trouble, please try turning this universe in which we all live off and then on again
[01:40] <mataniko> maybe that would also fix VS taking 5 minutes to recompile a simple line commenting
[01:40] <mataniko> brb reboot
[01:40] <-- mataniko left irc: Quit: Leaving
[01:44] --> Mataniko joined #scummvm.
[01:49] <-- Dominus left irc: Ping timeout: 260 seconds
[01:50] --> Dominus joined #scummvm.
[01:51] <snover> Mataniko: any better now?
[01:51] <Mataniko> drawing or building?
[01:52] <snover> yes. :)
[01:52] <Mataniko> building still weirdly slow. There's only 1 file to update so not sure what's the hold up
[01:52] <Mataniko> drawing does nothing, probably because i have no palette
[01:54] <Mataniko> basically calling initGraphics(320,200,true), fillScreen and updatescreen
[01:55] <snover> im afraid i know very little of visual studio, so i cant be much help there.
[01:55] <Mataniko> vs is fine now, i cleaned prefetch and temp
[01:56] <snover> ah, so just like xcode, it randomly breaks and requires you to clean up all the build directories before it will stop being broken again :)
[01:57] <Mataniko> sounds about right
[01:57] <Mataniko> ok this gives me something relatively simple to implement, palette loading
[01:57] <Mataniko> these look like simple palette files
[01:57] <Mataniko> since they're 300 bytes long
[02:00] <snover> is the engine 16-bit? (i assume so from the age, but it never hurts to ask!)
[02:10] <dreammaster> A full palette is normally 768 bytes long, since it's 256 * 3 bytes (red, green, and blue bytes for each entry)
[02:11] <dreammaster> But it could be a subset of a full palette, 100 entries * 3
[02:29] <Mataniko> sorry i mean it's 0x300 long
[02:29] <Mataniko> so 768 bytes
[02:30] <Mataniko> i'm still drawing blank
[02:35] <snover> you are calling to g_system->getPaletteManager()->setPalette(paletteData, 0, 256)?
[02:36] <Mataniko> yes
[02:37] <snover> if you force palette data to all white, any change?
[02:41] <dreammaster> If you end up with colors, but all faded, you may need to convert the palette bytes from 6-bit to 8-bit. This macro may be useful: #define VGA_COLOR_TRANS(x) ((x) * 255 / 63)
[02:41] <Mataniko> yep, i got white
[02:41] <Mataniko> dreammaster, at this point i'm just calling fillScreen(0xaaaaaa)
[02:42] <snover> that is an out-of-range value for that call
[02:42] <dreammaster> That may be your problem. The default initGraphics sets up a paletted 8-bit screen.
[02:42] <dreammaster> Which means that your passed value must be a palette index from 0 to 255
[02:43] <dreammaster> Ah.. even the help in the function declaration says it's only supported for 0 to 255 right now, and not 32-bit colors
[02:44] <snover> it goes into memset
[02:45] <Mataniko> hmm
[02:46] <snover> maybe you got unlucky and the palette data you were using has 0xaa = rgb(0,0,0)
[02:47] <dreammaster> ff,ff,ff for white
[02:48] <Mataniko> ok i got some success
[02:48] <dreammaster> Cool :)
[02:48] <Mataniko> i got a for loop to just push a different position every 200 ms
[02:48] <Mataniko> and i'm seeing colors that kinda make sense
[02:50] <snover> yay, first pixels on the screen! :)
[02:51] <Mataniko> "pixels"
[02:51] <snover> it counts!
[02:51] <Mataniko> and the macro was helpful too, colors were definitely too dark without it
[02:55] <Mataniko> alright, sleep!
[02:55] <snover> no way, stay up and program all night
[02:55] Action: snover exerts peer pressure
[02:56] <Strangerke|work> :)
[02:56] <Mataniko> too late, out of the zone!
[02:56] <Mataniko> thanks for the help
[02:57] <snover> np. good progress! 👍
[03:02] <dreammaster> goodnight
[03:16] <Simei> t0by: Thanks for asking, didn't meet any wierd problem for now. :)
[03:16] <Simei> Morning, everyone!
[03:17] <dreammaster> Morning
[03:18] <dreammaster> Or, late night for us, as the case may be :)
[03:19] <Simei> Haha
[03:26] <-- dreammaster left irc:
[04:51] <tsoliman> wow I just realized the Bazaar music in QFG3 is basically the space quest theme
[04:52] <tsoliman> https://youtu.be/h8aiK7gW34o?t=1509
[05:16] <snover> heh. i thought i had run into whatever detector problem TMM was having but it turned out i renamed some files so i could decompile the scripts and didnt name them back
[05:33] <-- Lightkey left irc: Ping timeout: 246 seconds
[05:34] --> omer_mor joined #scummvm.
[05:36] <-- omer_mor_ left irc: Ping timeout: 246 seconds
[05:45] --> Lightkey joined #scummvm.
[06:26] --> GitHub36 joined #scummvm.
[06:26] <GitHub36> [scummvm] hpvb closed pull request #950: SCI: Add detection tables for 1.01/GOG.com LSL7 (master...add-lsl7-gog-detection) https://git.io/vHIKl
[06:26] GitHub36 (GitHub36@192.30.252.40) left #scummvm.
[06:27] <cpasjuste> hi
[06:31] <TMM> snover, I backed out my detection table and it still works now... How the hell did I manage to get that start failure the first time.
[06:35] <TMM> I must've done something really stupid, but going back through my console's log I can't see what
[06:35] <-- borosky left irc: Ping timeout: 255 seconds
[06:42] <-- TMM left irc: Quit: Ex-Chat
[06:44] --> waltervn joined #scummvm.
[06:44] #scummvm: mode change '+o waltervn' by ChanServ!ChanServ@services.
[06:58] <-- olspookishmagus left irc: Remote host closed the connection
[07:03] <Strangerke|work> hi guys
[07:10] --> m_kiewitz joined #scummvm.
[07:10] <-- m_kiewitz left irc: Changing host
[07:10] --> m_kiewitz joined #scummvm.
[07:10] #scummvm: mode change '+o m_kiewitz' by ChanServ!ChanServ@services.
[07:27] <m_kiewitz> wjp: how did original sci32 handle pointer to objects inside the VM?
[07:27] <m_kiewitz> straight offsets?
[07:32] <wjp> what do you mean?
[07:42] <-- LittleToonCat left irc: Remote host closed the connection
[07:47] <wjp> but most things went through a layer of indirection called MemID
[07:47] <wjp> and a memory manager
[07:55] <waltervn> morning all
[07:57] <m_kiewitz> wjp: nevermind, my thoughts yesterday were incorrect. it seems Sierra added new features to the "End"-cycler
[07:58] <m_kiewitz> and it sets up to 2 cues during that cheeseMaker animation
[08:01] <m_kiewitz> PSA: Starpoint Gemini 2 currently free on Steam (2 days only)
[08:31] <logix> as one of the few people without steam, I have two questions - 1) can you sign up, buy games etc. via browser (no extra client download)? not talking about *playing* games, and 2) if you're not interested in *buying* games (only the free stuff), do you need to add credit card / paypal / ... info or is a working email address enough?
[08:32] <logix> I'm not even interested in doing any of that, I'm just curious
[08:34] <LePhilousophe> I think no credit card is ok
[08:34] <LePhilousophe> I don't have one registered on my account
[08:35] <LePhilousophe> I just need to type it when I want to actually buy something
[08:35] <logix> ok, cool
[08:45] lateral[m] <-- (lateralmat@gateway/shell/matrix.org/x-frdyeecwrslggwwi) left irc: Remote host closed the connection
[08:46] kszys[m] <-- (kszysmatri@gateway/shell/matrix.org/x-izsdalkluqqiwfey) left irc: Read error: Connection reset by peer
[08:48] FleetAdmiral[m] <-- (fleetadmir@gateway/shell/matrix.org/x-imvcrykorrhjyvdu) left irc: Remote host closed the connection
[08:48] Coldwine[m] <-- (coldwinema@gateway/shell/matrix.org/x-ujsrgixkyzlkqzks) left irc: Remote host closed the connection
[08:51] lateral[m] --> (lateralmat@gateway/shell/matrix.org/x-xvalcszjxwtlvizp) joined #scummvm.
[08:52] --> ajax16384 joined #scummvm.
[08:52] #scummvm: mode change '+o ajax16384' by ChanServ!ChanServ@services.
[09:21] FleetAdmiral[m] --> (fleetadmir@gateway/shell/matrix.org/x-dwqgjnearwtpfcby) joined #scummvm.
[09:21] kszys[m] --> (kszysmatri@gateway/shell/matrix.org/x-ezvaxunhjvkihrkr) joined #scummvm.
[09:22] Coldwine[m] --> (coldwinema@gateway/shell/matrix.org/x-wrcmmjyyzhtgjeqm) joined #scummvm.
[09:48] <-- |Cable| left irc: Ping timeout: 260 seconds
[10:02] --> |Cable| joined #scummvm.
[10:36] --> WooShell joined #scummvm.
[10:37] <WooShell> good meowning =^.^=
[11:02] --> omer_mor_ joined #scummvm.
[11:04] <-- omer_mor left irc: Ping timeout: 268 seconds
[12:09] FleetAdmiral[m] <-- (fleetadmir@gateway/shell/matrix.org/x-dwqgjnearwtpfcby) left irc: Remote host closed the connection
[12:10] lateral[m] <-- (lateralmat@gateway/shell/matrix.org/x-xvalcszjxwtlvizp) left irc: Remote host closed the connection
[12:10] kszys[m] <-- (kszysmatri@gateway/shell/matrix.org/x-ezvaxunhjvkihrkr) left irc: Remote host closed the connection
[12:10] Coldwine[m] <-- (coldwinema@gateway/shell/matrix.org/x-wrcmmjyyzhtgjeqm) left irc: Remote host closed the connection
[12:11] <-- snover left irc: Ping timeout: 260 seconds
[12:13] <-- Asterisk left irc: Ping timeout: 240 seconds
[12:14] --> snover joined #scummvm.
[12:14] #scummvm: mode change '+o snover' by ChanServ!ChanServ@services.
[12:15] --> Asterisk joined #scummvm.
[12:15] kszys[m] --> (kszysmatri@gateway/shell/matrix.org/x-tqshylbbqmtsqfzc) joined #scummvm.
[12:39] FleetAdmiral[m] --> (fleetadmir@gateway/shell/matrix.org/x-owkdryecrqcjjtkd) joined #scummvm.
[12:39] lateral[m] --> (lateralmat@gateway/shell/matrix.org/x-dfkmqgbvrehnmgve) joined #scummvm.
[12:39] Coldwine[m] --> (coldwinema@gateway/shell/matrix.org/x-rnxnhyzlukunljvp) joined #scummvm.
[12:58] [vEX] <-- (~vex@213-65-94-75-no42.tbcn.telia.com) left irc: Ping timeout: 240 seconds
[13:17] <-- Korak left irc: Ping timeout: 260 seconds
[13:34] --> Korak joined #scummvm.
[13:38] <m_kiewitz> snover: my thoughts yesterday on the cheese maker were incorrect
[13:39] <m_kiewitz> it seems sierra added new functionality to the End cycler class
[13:39] <m_kiewitz> and it can now cue more than once
[13:39] <m_kiewitz> it is set up to send out a cue at cel 4, which works fine
[13:39] <m_kiewitz> looking further into it
[13:39] <m_kiewitz> it seems last time i debugged it, it went from cel 8 or cel 9 straight to cel 10h
[13:40] <m_kiewitz> ah wait, no that was 10d
[13:40] <m_kiewitz> anyway, im onto it
[13:40] <m_kiewitz> but I received my new refurbished Thinkpad today, so I need to copy tons of stuff over
[14:10] --> Begasus joined #scummvm.
[14:20] --> Begas_VBox joined #scummvm.
[14:23] --> borosky joined #scummvm.
[15:05] --> t0by joined #scummvm.
[15:05] #scummvm: mode change '+o t0by' by ChanServ!ChanServ@services.
[15:05] <t0by> Good afternoon
[15:06] --> Henke37 joined #scummvm.
[15:13] <-- Begas_VBox left irc: Quit: Vision[0.9.8]: i've been blurred!
[15:17] <t0by> Simei: hey, how are you today? Any progress?
[15:21] <t0by> m_kiewitz: hey, got your new toy already? :)
[15:24] <m_kiewitz> yes
[15:25] <m_kiewitz> had a weird issue at first, after rebooting it once the HDD was still detected by BIOS, but it didn't want to boot anymore
[15:25] <m_kiewitz> tried DFSee (disc tool), lots of 0xFEs
[15:25] <t0by> o_O
[15:25] <m_kiewitz> then after 30 minutes i tried to turn it off and on
[15:25] <m_kiewitz> and now it works fine
[15:25] <m_kiewitz> no idea what happened
[15:26] <m_kiewitz> and im trying to copy over files from XP via WLAN, but i get disconnects every 20-30 minutes :/
[15:26] <t0by> None of this is normal.
[15:26] <m_kiewitz> the system was also very weirdly set up. one primary 7 MB partition, which has to be active and then the windows 7 partition
[15:27] <t0by> 1. disconnect cmos battery
[15:27] <t0by> 2. low-level format drive
[15:27] <t0by> 3. upgrade bios
[15:27] <m_kiewitz> nah it works now
[15:27] <t0by> 4. check wlan daughterboard
[15:27] <t0by> eh, do 3. all the same
[15:27] <m_kiewitz> also i wouldn't want to format the drive, because i don't have a windows 7 CD/DVD
[15:28] <m_kiewitz> i resized the partition, which also needed some extra hacks because of silly windows
[15:28] <t0by> as long as you have the COA, aren't those pretty much everywhere?
[15:28] <m_kiewitz> idk, but im too lazy to install it myself lol
[15:29] <m_kiewitz> that ulrabay caddy, did you buy the exact same for yours?
[15:29] <m_kiewitz> for exactly that seller?
[15:29] <m_kiewitz> *from
[15:29] <t0by> Oh, no, I literally linked you a random one from ebay
[15:29] <t0by> Why, have you got screwed?
[15:29] <m_kiewitz> but you also got a very cheap one from Hong Kong?
[15:29] <m_kiewitz> nope, i just want to make sure it works lol
[15:29] <t0by> Yeah.
[15:29] <t0by> Well, it's a piece of metal with a passive SATA connector.
[15:30] <t0by> There's not *a lot* you can screw up in there
[15:30] <m_kiewitz> i think i will get a 256 GB SSD and use that one on top
[15:30] <t0by> Of course probability of getting a borked unit is directly proportional to shipping time, so :P
[15:30] <t0by> m_kiewitz: by all means install an SSD on that thing.
[15:31] <m_kiewitz> it already has one now
[15:31] <m_kiewitz> but 180 GB only
[15:31] <t0by> weeeeee
[15:31] <m_kiewitz> yeah its pretty nice, but not large enough :P
[15:32] <m_kiewitz> still whoever decided to use "+" and "-" within BiOS
[15:32] <m_kiewitz> should be removed from the job
[15:33] <m_kiewitz> because "+" and "-" keys are not detected as such (they obviously use scan codes)
[15:37] <t0by> Damnit, just get a 30 inch monitor :P
[15:47] --> ny00123 joined #scummvm.
[15:50] <m_kiewitz> it seems its RestrictNullSessAccess (LanmanServer) :/
[15:50] <m_kiewitz> i hope i fixed it
[15:54] <m_kiewitz> wjp: are you able to debug sci32 interpreters in dosbox?
[15:54] <m_kiewitz> the larry 7 issue is really really weird
[15:54] <m_kiewitz> code wise it seems that for that special "End" class, the ending cue is explicitly not triggered, so only 1 cue at cel 4
[15:55] <m_kiewitz> and after that a sound is played, caller is not set, so no cue either
[15:57] <wjp> somewhat
[15:58] <m_kiewitz> what can you do effectively?
[15:58] <m_kiewitz> can you check which class gets really initiated?
[15:58] <m_kiewitz> there are 2 "End" classes
[15:59] <m_kiewitz> one inside 64041
[15:59] <m_kiewitz> which is the "trigger multiple cues"-cycler
[15:59] <m_kiewitz> and then there is the regular End class in 64992
[16:00] <m_kiewitz> that's the only major weird thing in there, maybe original sci doesn't use the multiple-cue End class. or maybe we get confused somewhat by it
[16:01] <m_kiewitz> although well we need 2 cues after state 6 was processed and right now I don't see anything that should even do so
[16:02] <wjp> VM stuff at that level will be very hard
[16:02] <wjp> maybe easier to sabotage a script and see what happens?
[16:02] <m_kiewitz> CycleCueList::cycleDone of that "trigger multiple cues"-cycler is definitely clearing the caller property, which is later then checked
[16:03] <m_kiewitz> and when it's set, a end cue is triggered. which obviously won't be the case here
[16:03] <m_kiewitz> hmm, i could try to remove the sound play state yes
[16:03] <m_kiewitz> that would at least confirm that the cue is not from there
[16:04] <m_kiewitz> thinking about that script, logically that "multiple cue" cycler should send out 2 cues, that would make sense when you look at what they are doing during that cutscene
[16:05] --> omer_mor joined #scummvm.
[16:05] <-- omer_mor_ left irc: Ping timeout: 246 seconds
[16:10] --> Begas_VBox joined #scummvm.
[16:16] <-- ajax16384 left irc: Read error: Connection reset by peer
[16:20] --> LittleToonCat joined #scummvm.
[16:22] --> cpasjuste_ joined #scummvm.
[16:23] <-- cpasjuste_ left irc: Client Quit
[16:39] --> ajax16384 joined #scummvm.
[16:39] #scummvm: mode change '+o ajax16384' by ChanServ!ChanServ@services.
[16:58] <t0by> I'm going afk for a while, see you after dinner
[16:59] <t0by> Simei: please let us know if you are getting anywhere
[16:59] <t0by> (Doubly so if you are *not* getting anywhere)
[16:59] <snover> t0by: bring me some leftovers
[17:00] <t0by> What do you mean, "leftovers".
[17:00] <t0by> What are we, barbarians?
[17:00] <t0by> There shall be no leftovers.
[17:01] --> Farmboy0 joined #scummvm.
[17:01] <-- Farmboy0 left irc: Changing host
[17:01] --> Farmboy0 joined #scummvm.
[17:27] <Simei> t0by: I've arrived just before calling the built-in functions by stack machine, still having several compiling errors but nothing serious. I think I can clean them tonight. What I've done till now is to add all declarations of functions in SludgeEngine class and create different cpp files for definition.
[17:29] <Simei> not touch built-in.cpp yet, but get functions loaded from data file
[17:32] <Simei> When I've cleared the bugs, I will make a commmit tonight
[17:33] --> SylvainTV joined #scummvm.
[17:33] #scummvm: mode change '+o SylvainTV' by ChanServ!ChanServ@services.
[17:35] <Simei> Then I'll get started on built-in functions. I'm not very familiar with those macro definitions, I may have lots of questions then. :/
[17:36] <Simei> Good appetite for dinner, anyway!
[17:38] <-- erdic left irc: Ping timeout: 255 seconds
[17:38] --> erdic joined #scummvm.
[18:04] <-- Begasus left irc: Ping timeout: 246 seconds
[18:05] <m_kiewitz> wjp: how does the class opcode work?
[18:05] <m_kiewitz> what happens when there are 2 classes with the same name in different scripts?
[18:11] <-- criezy left irc: Quit: criezy
[18:12] --> criezy joined #scummvm.
[18:12] #scummvm: mode change '+o criezy' by ChanServ!ChanServ@services.
[18:16] --> Begasus joined #scummvm.
[18:20] <wjp> m_kiewitz: it doesn't go by name
[18:20] <wjp> but I'd have to look up how they're indexed
[18:20] <m_kiewitz> wjp: so it points to a script?
[18:21] <m_kiewitz> + object, something like that?
[18:24] <wjp> something with the species selector apparently (Script::initializeClasses)
[18:24] <m_kiewitz> snover: i just nuked state 7 of soMakeCheese and it still works
[18:24] <wjp> with vocab.996 pointing at the right script
[18:26] <wjp> I'm away for a few hours
[18:37] --> m-kiewitz joined #scummvm.
[18:37] <-- m-kiewitz left irc: Changing host
[18:37] --> m-kiewitz joined #scummvm.
[18:37] #scummvm: mode change '+o m-kiewitz' by ChanServ!ChanServ@services.
[18:39] <-- m_kiewitz left irc: Ping timeout: 246 seconds
[18:57] <P2E> argh, I think I just lost files in amiga ffs thanks to a lockup/crash
[18:57] <-- cpasjuste left irc: Quit: ZNC 1.6.3+deb1 - http://znc.in
[19:01] <-- Begasus left irc: Ping timeout: 246 seconds
[19:02] --> NuSuey joined #scummvm.
[19:03] <-- Begas_VBox left irc: Quit: Vision[0.9.8]: i've been blurred!
[19:29] <-- m-kiewitz left irc: Quit: technology isn't intrinsically good or evil. It's how it's used. Like the Death Ray.
[19:30] --> girafe joined #scummvm.
[19:33] --> m_kiewitz joined #scummvm.
[19:33] <-- m_kiewitz left irc: Changing host
[19:33] --> m_kiewitz joined #scummvm.
[19:33] #scummvm: mode change '+o m_kiewitz' by ChanServ!ChanServ@services.
[19:56] --> cpasjuste joined #scummvm.
[20:20] --> Strangerke joined #scummvm.
[20:20] #scummvm: mode change '+o Strangerke' by ChanServ!ChanServ@services.
[20:21] <Strangerke> hi guys
[20:27] <-- ajax16384 left irc: Read error: Connection reset by peer
[20:39] <-- waltervn left irc: Quit: Leaving
[20:52] --> TMM joined #scummvm.
[20:52] #scummvm: mode change '+o TMM' by ChanServ!ChanServ@services.
[20:56] <TMM> I went back to look at my console log and I really need to figure out why lsl7 wasn't detected properly. I literally see myself do a make install, go to the install dir and run scummvm. I think I need to delete the game and add it back in
[20:56] <TMM> see if detection still succeeds
[20:57] <m_kiewitz> ah there you are
[20:57] <m_kiewitz> yes, please check that
[21:02] <-- Henke37 left irc: Quit: ERR_SHUTDOWN
[21:04] --> omer_mor_ joined #scummvm.
[21:06] <-- omer_mor left irc: Ping timeout: 246 seconds
[21:07] <-- ny00123 left irc: Quit: Leaving
[21:21] <Simei> t0by: Commit pushed.
[21:21] <Simei> https://github.com/yinsimei/scummvm/tree/WIP1-1
[21:23] <Simei> I doubt there could be memory leaks, I will re-check it tomorrow. :/
[21:33] <TMM> m_kiewitz, did I miss something? it was my sister's wedding, I wasn't online
[21:34] <m_kiewitz> TMM: just remove the detection data, that you added, and try to get the game detected again
[21:34] <m_kiewitz> we need to figure out why it didn't work for you
[21:34] <m_kiewitz> because your detection data is the exact same that is already in the detection table
[21:35] <TMM> yeah, I ended up only grepping for the resource.aud md5
[21:41] <TMM> m_kiewitz, I can't reproduce it, I don't know what the fuck I did
[21:42] <m_kiewitz> :/
[21:42] <m_kiewitz> you didn't change anything with the directory? maybe it was different file sorting
[21:42] <TMM> m_kiewitz, http://paste.debian.net/936571/ I'm sure I'm not crazy
[21:42] <m_kiewitz> lol
[21:43] <m_kiewitz> ah wait, that happened when you started the game, that was already detected previously?
[21:43] <m_kiewitz> detected/added?
[21:44] <TMM> I'm not 100% sure
[21:44] <m_kiewitz> also: segmentation fault?
[21:44] <TMM> I tried adding it with 1.9.0 and starting with master
[21:44] <TMM> because I also wasn't sure
[21:44] <TMM> but it worked just fine
[21:44] <TMM> I'm so confused
[21:45] <m_kiewitz> maybe get 1.9.0, then add it
[21:45] <m_kiewitz> and then try to start it with latest version after that
[21:46] <TMM> I already did that :(
[21:46] <m_kiewitz> and it worked fine?
[21:46] <TMM> yeah
[21:46] <TMM> I did *something* but I don't know what
[21:46] <TMM> I'm not saying this was magic :) I'm saying I did something stupid and I can't reproduce my stupid
[21:48] <TMM> the music/ directory is entirely real though :)
[21:51] <m_kiewitz> yes, gog changed that
[21:52] <t0by> Simei: sorry, here I am
[21:52] <t0by> Simei: I'll get to you in a second
[21:53] <t0by> anyway I've seen "memory leaks" - JFYI you know you can use Valgrind to runtime checking that?
[21:53] <t0by> *for
[21:54] <Simei> No, it's ok. I'm not having problems now :)
[21:54] <Simei> I didn't know that.
[21:56] <Simei> It seems quite useful. I will look it
[21:57] <Simei> up*
[21:57] <t0by> Ouch.
[21:57] <t0by> https://github.com/yinsimei/scummvm/commit/affcc2eb7e1945f2fc64e016bd8e779df92399c8#diff-95b61f2746f0a2afc91002b5d36bd132
[21:57] <t0by> I'm not sure I'm reading this right, but this is fishy.
[21:58] <t0by> Well, seems.
[21:59] <t0by> I *think* stubbing the builtins should mean "stubbing the side effects" (e.g. the actual rendering of something), but they should be effectful "for real" on the stack, otherwise you end up with an inconsistent stack and your interpreter explodes.
[22:00] <t0by> *IF* I am understanding correctly the code (I'll have a deeper look in 5 minutes)
[22:00] <t0by> Considering addOverlay, I think the *only* line that should have been commented is loadBackDrop
[22:01] <Simei> Ok, I see. I may have got it the wrong way
[22:01] <t0by> Let me check if I'm guessing right
[22:03] <m_kiewitz> snover: i just nuked part of End::cycleDone and it till works :/
[22:03] <m_kiewitz> *still
[22:06] <Simei> So, next, I will add every built-in functions into it and stub most code of them like I did so or leave as much code as possible, only comment the image/audio part?
[22:08] <t0by> I'm not worried about quantity as much as I am about quality
[22:08] <m_kiewitz> wjp: back?
[22:08] <t0by> I strongly suspect some stuff you've commented out has side effects *on* the stack and is necessary to preserve the consistency of the interpreter
[22:08] <t0by> I'm checking
[22:09] <t0by> I might be completely wrong, a second.
[22:09] <t0by> Simei: well, for starters... does this thing work?
[22:09] <Simei> Ah, ok.
[22:09] <t0by> I haven't asked, but can you run Welcome in it?
[22:11] <Simei> I get "Built-in function called!" printed
[22:11] <t0by> Simei: is that by any chance the last call?
[22:12] <t0by> Does it work if you do something slightly less trivial, e.g. sequential composition of 2 builtins or putting them inside a while loop?
[22:12] <Simei> No, it's been called plenty of times but the program ended with a segmentation fault at the end
[22:12] <t0by> I am afraid that the various sequences of getValueType/trimStack calls are effectively popping function args from the stack, and if you don't pop them Funny Things Might Happen.
[22:12] <t0by> Ah, see, there's your funny things.
[22:13] <Simei> Ah, ok.
[22:14] <t0by> (I am assuming this is a standard stack machine, which is an unverified assumption on my part so far)
[22:15] <Simei> Ah, I get your point
[22:17] <t0by> Simei: I'll spend some time investigating this. In case I'm right (I hate saying that but I probably am) can you please make a copy of this branch, call it t0by_please_check_this or something and then recommit on your WIP-1 branch so that those bits are preserved and only the calls with external side effects are commented and replaced with a debug call?
[22:17] <t0by> Even better, try to print the function arguments as well.
[22:17] <t0by> In case something fishy happens to the stack you'll notice.
[22:18] <t0by> Sorry, I should have been clearer earlier.
[22:18] <t0by> Ah, yes, notice how getValueType has side effects on its first argument.
[22:19] <Simei> It's quite a good opportunity to learn about stack machine for me :)
[22:20] <t0by> trimStack looks like a pop.
[22:20] <t0by> I think getValueType and trimStack are what is traditionally called "peek" and "pop"
[22:22] --> user10 joined #scummvm.
[22:22] <t0by> Simei: if you are not familiar with stack machines the concept is relatively straightforward; they are a *very* common way to implement interpreters such as this. If you do some googling you'll find a few wikipedia articles and some papers; go as deep as you like, but you just need the general idea here.
[22:23] <t0by> Again, I am blindly *assuming* this is your garden variety stack machine, we'll see if I am wrong soon.
[22:23] <-- user9 left irc: Ping timeout: 240 seconds
[22:23] Nick change: user10 -> user9
[22:24] <t0by> Simei: for the time being (after googling a bit to get the general idea) can you please try to do as I said earlier, i.e. comment out *only* the lines that have side effects outside the interpreter?
[22:25] <Simei> Ok, I will do it
[22:25] <t0by> So e.g. keep all calls to trimStack, getValueType and the like
[22:25] <-- Farmboy0 left irc: Remote host closed the connection
[22:25] <Simei> What about other built-in functions ?
[22:28] <-- antlarr left irc: Ping timeout: 240 seconds
[22:29] <t0by> Simei: the *very* general idea here is as follows: the actual parameters x,y,z to a function f(x,y,z) are pushed on top of the stack before it's called. So what the interpreter does is popping x,y,z from the stack in order to use them. If you fail to pop them the next function will think they are its own actual parameters, Which Is Bad (tm).
[22:29] <Simei> Ah, I see why I commented them all
[22:29] --> antlarr joined #scummvm.
[22:29] <Simei> They all global functions
[22:30] <t0by> Um, sorry, it's very late here and I'm beginning to be dumber than usual. That is a problem how?
[22:30] <Simei> but getValueType and trimStack are member functions of SludgeEngine
[22:31] <t0by> And?
[22:31] <Simei> I didn't know how to get these built-in functions into SludgeEngine class
[22:32] <t0by> Ah.
[22:32] <Simei> So I commented them to see later. But I forgot about it :p
[22:32] <t0by> Right now I'd tell you to do the dirtiest way possible
[22:33] <t0by> Put them inside the sludgeengine, make trimStack public, use a friend class, whatever.
[22:33] <t0by> Of course *just for the time being*, we'll clean up the mess after we have the thing running.
[22:33] <t0by> Architecturally I'd say builtins do in fact belong *in* the whatever the class containing the interpreter is.
[22:34] <-- NuSuey left irc: Quit: Connection closed for inactivity
[22:34] <t0by> We probably want a specialized class instead of throwing everything and the kitchen sink instead SludgeEngine
[22:34] <t0by> *inside SludgeEngine
[22:34] <t0by> But that's a concern for later.
[22:35] <t0by> Simei: so, can you please do that? Comment *only* the bits which do actual stuff and leave all interpreter-specific calls (or at least anything that touches the stack) untouched?
[22:36] <Simei> Ok, I see. declare them all into the sludge engine ?
[22:36] <t0by> It shouldn't be terribly difficult (if you have a hard time doing it you might be touching something that has, in fact, long extending side effects and you should *probably* stub it)
[22:36] <t0by> Simei: yeah, just for the time being shove them in here.
[22:37] <t0by> By doing so you *should* get to the point where you don't have segfaults and the like and the script does run cleanly - with debug calls instead of drawing to video and doing actual stuff in general.
[22:38] <t0by> You might hit a problem if some builtins try to *read* from somewhere. In that case stub all of that and return a dummy value. Again, just make sure that the stack is altered as it should (the right number of items are popped and pushed).
[22:39] <Simei> Ok, I see what I should do.
[22:39] <t0by> I'm literally falling asleep and I'm probably close to giving very bad advice if I haven't already
[22:39] <t0by> I'll go to bed if you don't need me
[22:39] <Simei> No no, it's quite good and clear for now
[22:40] <t0by> Great!
[22:40] <t0by> See you tomorrow everybody
[22:40] <Simei> Just for the new branch
[22:41] <Simei> It's just do what you talked about right?
[22:41] <Simei> and leave this mess in WIP1-1?
[22:41] <t0by> Simei: yes, or the other way around
[22:42] <Simei> After we will mer ge the two when all go well
[22:42] <t0by> i.e. branch WIP1-1-as-it-was from WIP1-1
[22:42] <t0by> and then alter WIP1-1
[22:42] <Simei> Ok ok, I see
[22:43] <Simei> So, thanks a lot for staying up for reviewing the code !
[22:44] <snover> m_kiewitz: when you say it works you are referring to SSCI?
[22:44] <m_kiewitz> snover: yes
[22:44] <m_kiewitz> any way to surely crash the VM?
[22:44] <t0by> Simei: no merging, one is meant to be a dead track containing your present ("wrong") status, the other is meant to contain the fixed version
[22:44] <m_kiewitz> because it may also be that End from that other script isn't called
[22:45] <t0by> Just make a backup of your present branch, that's all
[22:45] <Simei> Ah, I see.
[22:45] <Simei> I get it
[22:45] <t0by> Simei: just in case freenode has ##git, where there's people that can hand-hold you through the process if necessary
[22:45] <t0by> they are very helpful - and awake.
[22:46] <Simei> Haha, that sounds quite good
[22:47] <t0by> Simei: everything okay?
[22:47] <snover> m_kiewitz: Im sure there is, but I cannot think of anything right now
[22:47] <Simei> Yes, okay!
[22:47] <m_kiewitz> i can try stack underflow
[22:48] <t0by> Good night all, then!
[22:48] <Simei> t0by: Goodnight and thanks for your help!
[22:48] <snover> m_kiewitz: maybe try to load using an invalid selector
[22:49] <snover> s/load/send
[22:51] <snover> m_kiewitz: oh, any attempt to use the `lea` opcode should result in a crash
[22:51] <snover> if you can do that
[22:54] <-- t0by left irc: Quit: t0by
[23:00] <-- girafe left irc: Quit: Leaving
[23:23] <-- tsoliman left irc: Quit: ZNC - http://znc.in
[23:24] <m_kiewitz> snover: wth, it didn't crash
[23:25] <m_kiewitz> ah wait, i kept the toss
[23:27] <m_kiewitz> hmm, still doesn't crash even in scummvm. Shouldn't push0, push0, ret crash the VM?
[23:32] <snover> https://zetafleet.com/i/5924c6207c056.png this is from phant2, but i have no reason to think lsl7 is any different (it has been this way for all of sci32)
[23:32] <m_kiewitz> ah nice
[23:33] <snover> afaik scummvm doesnt replace op_lea ever so it is implemented for sci16
[23:34] <m_kiewitz> what happens in our sci?
[23:34] <snover> things& :)
[23:34] Action: m_kiewitz presses the red button
[23:34] <m_kiewitz> huh, nothing?
[23:35] <snover> scummvm will error if you use opcode 0x2f
[23:36] <m_kiewitz> hmm, then i did something wrong
[23:37] <snover> i cant remember what the conversion is to get the opcode value from the script data
[23:37] <snover> masking the high bit?
[23:38] <m_kiewitz> hmm for me it just ignores it
[23:38] <m_kiewitz> 0x5B xx xx for lea w/ word
[23:38] <m_kiewitz> anyway, SSCI doesn't crash
[23:39] <m_kiewitz> which means that code doesn't seem to be called at all
[23:39] <m_kiewitz> so it may have something to do with class opcode and class handling
[23:39] <m_kiewitz> in lsl7 there are 2 "End" classes
[23:39] <-- Strangerke left irc: Ping timeout: 246 seconds
[23:40] <m_kiewitz> and that one special "End" class is used for step 6
[23:40] <snover> class id to script mapping is in vocab 996 i believe
[23:41] <m_kiewitz> End::cycleDone can't be called, I injected a LEA in there
[23:41] <m_kiewitz> but it is called in our sci
[23:41] <m_kiewitz> so either a cue is triggered right before that
[23:42] <snover> you verified that the LEA does crash in SSCI by putting it in code you know is called?
[23:42] <m_kiewitz> ::cycleDone for that cycler will not create a cue for cycleDone
[23:42] <m_kiewitz> well, i will try that too moment
[23:42] <snover> it shouldnt matter but i think you might have reversed byte/word
[23:44] <m_kiewitz> yes crashes
[23:44] <m_kiewitz> so that code is not called
[23:44] <snover> ok. interesting.
[23:44] <m_kiewitz> that special class is using a byte array
[23:45] <m_kiewitz> you can set certain cels up for ::cue
[23:45] <m_kiewitz> so maybe that's where things are going wrong
[23:45] <m_kiewitz> it definitely has 1 cue set up for cel 4
[23:45] <snover> can you tell me offhand which two scripts are the ones with the different Ends?
[23:45] <m_kiewitz> so maybe the code is meant to work for cel 4 and last cel, but it's not cueing the regular ::cycleDone
[23:45] <m_kiewitz> 64041
[23:46] <m_kiewitz> that's the one with the special End, which is used
[23:46] <m_kiewitz> the other one is 64992 afaik
[23:46] <m_kiewitz> that's the normal End, which cues once at the end
[23:46] <m_kiewitz> we really need 2 cues
[23:46] <m_kiewitz> so I think something is going wrong w/ that byte array
[23:47] <m_kiewitz> cycleDone is called on the next ::doit after the last cel was set
[23:47] <m_kiewitz> so that's why I assume it's supposed to cue directly when last cel is set somehow
[23:47] <m_kiewitz> then calls changeState, which will then change cel
[23:47] <m_kiewitz> so ::cycleDone is never called
[23:48] <m_kiewitz> that's the only way it makes sense
[23:48] <m_kiewitz> unless the ::cue is coming from somewhere completely different
[23:48] <m_kiewitz> oh and as i said already - the ::cue is definitely NOT from the audio sample that is played on changeState(7)
[23:48] <m_kiewitz> i nuked that code already and it still works in SSCI
[23:49] <snover> i dont know if you looked already, but the class table seems to be set up correctly
[23:49] <m_kiewitz> i haven't
[23:49] <m_kiewitz> but i guess it has to take this End
[23:49] <snover> class 0x19 (End) from script 64992; class 0xc4 (End) from script 64041
[23:49] <m_kiewitz> otherwise there would only be 1 ::cue
[23:49] <m_kiewitz> and that's not enough
[23:51] <snover> state 1 uses 0xc4 End, state 6 uses 0xc4 End, state 8 uses 0x19 End
[23:55] <snover> (these are the states for soMakeCheese, just in case that was not clear)
[23:58] <m_kiewitz> state 6 it is
[23:59] <m_kiewitz> wait, state 1 uses it too? o_O
[23:59] <m_kiewitz> i never got a cycleDone from there either
[23:59] <m_kiewitz> not even in our sci
[23:59] <snover> at 0052:6776
[00:00] --- Wed May 24 2017