A huge jump of progress, & back at square 1?
Aryan Rawlani, 01/08/2024 | Source: Google Summer of Code with ScummVM
Aryan Rawlani, 01/08/2024 | Source: Google Summer of Code with ScummVM
gunnar, 29/07/2024 | Source: GSoC 2024 ResidualVM
Now we can render our WME games even with shaders. The most work was actually related to setting up the surrounding code and not so much the actual shaders (minus the one which is responsible for rendering .X models). At the moment, things are somewhat unorganized however and the current code should be refactored, interfaces improved and common code factored out. I would claim that at the moment one can see the fact that WME was designed for the old fixed function pipeline and that the addition of the shader renderer is not completely straight forward. In contrast changing from Direct3D to OpenGL was easier, the only real change that I made was using the OpenGL matrix stack, which now turned out to perhaps been the wrong direction. Well, it can be reimplemented (and is so at the moment), but the old WME code didn’t rely on it either, so I might change this back.
I hoped that lighting done by shaders would produce the same results as the original code but this is not the case.
Let me just assure you that Rune is not supposed to look like he is almost getting sick. Apart from that though, things seem to look just fine.
Nathanael Gentry, 28/07/2024 | Source: ScummVM on Nathanael Gentry
This week, I worked on implementing a few Lingo commands that required some significant backend work, but not much in the rendering code where I have spent so much of my time. I mentioned that I had worked on a custom cursor implementation, and I spent the first part of the week fixing bugs there. Now cursor bitmaps like the starfish on the island are properly displayed at the proper position, whereas after my initial work just a black box showed.
Early in the week, I fixed a subtle rendering bug that had plagued Spaceship Warlock for a while. You’ve seen how the Stambulian policemen in Warlock were bright green; well, this was about the same as the keying colour that the MacGUI was using for border transparency. Once I spotted this, the fix was easy – and also prevented a redundant surface copy. (Yay for performance improvements!) Here you can see how the erroneously applied transparency actually gave a nice look to an otherwise bland wall in Stambul:
I also finished the implementation of custom colour palettes. For a long while
the opening to Chop Suey looked all psychedelic. It turns out that a recent
refactoring swapped around the order of palette loading so ScummVM was given the
wrong palette to use. My partial fix for this revealed that our recently-added
target Majestic used a castmember palette, which had been loaded before –
albeit improperly. So over the weekend I expanded our Director palette manager
to support custom palettes alongside the half-dozen default Mac ones. This also
brought along basic support for the puppetPalette
command, which controls the
palette from Lingo. Now, Chop Suey and Majestic are looking quite handsome:
This project came later in the week, however. I first implemented sound fading, which more intense than I first knew. Since multiple movies can be running at once, my knee-jerk blocking fade loop didn’t work out. Instead, I needed to integrate the sound fade with the existing score stepping methods. I’m amused that that this was one of my largest commits for the week. (Thankfully, though, transitions do seem to block in the original – that would be a pain to refactor.)
Finally, I scratched my head for a while on an issue that @sev has since begun looking into. An interesting Director target is Macromedia’s own guided tour, which takes you “behind the scenes” at their studios to introduce new features of Director. Our renderer implicitly assumed that bitmap sprites had the same dimensions as the underlying castmembers, unless the dimensions had been modified from Lingo. Well, our smartly-dressed friend from the guided tour dismissed that theory:
What’s on the left is the original sprite (plus arms), and on right is the original castmember. ScummVM draws them both the same size. I would never have noticed, except that the sprite for his moving mouth appears all out of place when he isn’t the right size. Director does indeed have an option to scale individual sprites in the score, and we were reading this information in for bitmaps… but when I tried to use it there were puzzling discrepancies in the dimensions we expected and what the file clearly said. I still haven’t figured out why.
It’s been a good week over all, with interesting tasks both in and outside GSoC. You’ve perhaps seen on my bio that I like playing music. One of my friends recruited me to play piano for her upcoming violin competition, so when I need a break from coding I spend a few hours with the interesting sonorities of the great American composer Samuel Barber. And, at university on the weekends, I am working on using machine learning to control dielectric elastomers – smart materials that show much promise for soft robotics.
Dylan Servilla, 27/07/2024 | Source: Dylan Servilla - ScummVM Blog
【方法分享】(无需回复)不用翻墙挂梯子,改host就可众裸 ...:2021-5-30 · 应该有人不知道sstm可众不用挂梯子,直接裸连,只用改host就行了,当然速度稍微慢一点 host如下: 205.185.127.78 sstm.moe 直接粘贴到host文件里就好了,具体方法怎么修改host请百度。
the title of window
Nothing I did last week is particularly interesting to look at, so here’s a bug in Chop Suey I fixed today:
Before, you couldn’t put clothes on the dog. Now, you can put clothes on the dog. Problem solved. :)
Aryan Rawlani, ssr节点购买网址 | Source: Google Summer of Code with ScummVM
English, proper paddings |
Hebrew - Improper paddings |
shadowsocks+v2ray配置笔记 – Funny JS:2021-2-21 · 2021年2月21日 shadowsocks+v2ray配置笔记 前提:随着墙的增高,单纯的shadowsocks简单加密也越来越容易被检测和封锁,因此需要更强力的加密与混淆手段,避免流量被检测出来。 |
Native-windows dialog. The title, and the buttons for "Choose/Cancel" are in english. |
Russian translations for dialog title and "OK" button (The OK button has the label - "Choose") |
gunnar, 22/07/2024 | Source: GSoC 2024 ResidualVM
Ok, what’s so special about the following picture:
Well, nothing, except that the scene was rendered with OpenGL shaders instead of the old fixed function pipeline. Which in this case (2d graphics) was not the biggest change, essentially only the 2d projection matrix has to be setup for the shader. 3d graphics will require more work, though. Also some refactoring will be necessary, some of which has already happened. For example, there is a 3d renderer interface class now with two implementations, which can be selected from the ResidualVM menu (a third one, based on TinyGL, is supposed to follow at some point in the future).
授之众鱼,不如授之众渔 – 第2页 – IACG.RIP:SS/SSR机场 1.NDSS 官网注册地址:https://ndss.top [邀请码08bT] 有一说一,这是第一家主动来找我推广的机场 推广是一回事,好不好用咱还是得试试。 首先在线路方面,他伔不仅有SSR,同时也是提供了V2ray的节点,此处应当好评。
[技术宅] 超详细|新手向|教你一步一步自己搭梯子(3 ...:2021-12-23 · [技术宅] 超详细|新手向|教你一步一步自己搭梯子(3)—— SS篇 2021年12月23日 Will 0 Comments [技术宅] 超详细|新手向|教你一步一步自己搭梯子(3)—— SS篇
Dylan Servilla, 21/07/2024 | Source: ss梯子2022年
This week I worked out some longstanding Lingo issues!
The first issue was duplicate scripts in Director 4 movies. Each cast member should have at most one Lingo script associated with it, but we were running into movies in which a cast member seemingly had several scripts. There was no obvious way to deal with this - redefining the script usually led to incorrect behavior, and so did keeping the original definition.
These duplicate scripts were rare in most movies, so the problem went ignored for a while, but in our recently added target Majestic Part 1: Alien Encounter, there were several hundred scripts, and almost every one conflicted with another.
Initially, I thought that there must be something that indicated certain scripts, or at least certain handlers within these scripts, were unused. The first place I investigated was the script’s “handler vectors.” These differed between some of the duplicate scripts, and I thought they might hold the key to how the script conflicts should be handled.
“Handler vectors” were identified as an array of 16-bit integers in Anthony Kleine’s Director documentation, but there was no explanation of their purpose. I got in touch with Anthony, but he couldn’t remember what they were for, and they remained a mystery to me for weeks. Once I began deeper investigation, it quickly became apparent that the “handler vectors” are just used to map event IDs to handler IDs. Totally unrelated.
The next suspect was the Lingo context, a container which maps script IDs to script data:
Section LctX {
Struct header {
...
Uint16 [big] freePtr
}
...
Array scripts(count) {
Struct scriptLink {
Uint32 unknown
Uint32 [big] ID // use MMAP!
Uint16 [big] used // 0 : unused , 4: used
Uint12 [big] link // For unused entries: link to next unused, or -1.
}
}
}
(Source: Brian151)
The two areas of interest are:
ssr节点购买网址
fieldssr节点购买网址
. The entry’s 怎么挂梯子上外网
field gives the index of the next unused script, or -1.However, after much investigation, it seems that there is actually no difference in how a script with 手机怎么搭梯子到外网
and a script with used = 4
should be handled. The linked list does indeed indicate unused scripts, but all of the entries in the list seem to have an ID
of -1. Thus, these unused scripts have no script data associated with them, and they were never being loaded in the first place. There was no way they could be causing conflicts, since they didn’t really exist.
搭建梯子 – 聚析的博客:2021-3-22 · 如果你只想要上外网而不指定要搭建ssr的话,推荐你一种最简单的搭建方法:如何搭梯子科学上网?,如果你一定要搭建ssr的话请接着往下看。(需要准备一个163邮箱) 第一步:注册并部署 […]
The scripts are not owned by their individual Cast Members in the Key Table [which links cast members to most of their assets] as you may expect. Instead, each Lingo Script has the number of its corresponding Cast Member ss梯子2022年.
After a few days of testing, I noticed that the cast member ID stored within Lingo scripts was sometimes incorrect. Or, as in Majestic, almost always incorrect. There had to be some other way by which cast members were linked to their scripts.
The obvious place to look was in the cast member data, which is split into two parts - data specific to the cast member type, followed by largely standard cast member info. We had previously identified a scriptId
field in the data specific to script cast members, and these IDs always seemed to be correct. However, other types of cast members could have scripts as well, and since they wouldn’t have this field, this solution wouldn’t work for them. Or so it seemed.
Long story short, we were treating too many bytes as type-specific data, and the scriptId
was actually in the standard cast member info. Once that was fixed, every cast member had a single, correct scriptId
associated with it. Use that to link cast members to the scripts, and no more duplicate scripts!
安利一个我正在使用的梯子(2021年5月26日更新) | Kouss博客:2021-5-26 · 安利一个我正在使用的梯子(2021年5月26 日更新) 2021年02月24日 爱搞机 安利一个我正在使用的梯子(2021年5月26日更新 ... iPhone的ss 客户端需要美区账号(且付费)才能下载,有些公众号有小火箭的共享账号,自己搜一下。其他客户端参考他伔网站 ...
First, I needed to differentiate between statements and expressions. An expression by itself, like 2 + 2
, isn’t a valid Lingo script - it needs to be an argument to a statement, like put 2 + 2
. However, we were treating expressions and statements exactly the same, which allowed incorrect scripts and significantly complicated the grammar. Once this was fixed, half of the grammar’s 441 conflicts were gone.
Next, I needed to get rid of the differentiation between Lingo’s subroutine types. Confusingly, Lingo has (at least) 3 different types, with overlapping purposes:
foo()
or foo
.put foo()
. Very rarely, you can also invoke them as statements.Now, these are separate things, but they should only be treated separately during execution. Previously we were differentiating them in the grammar, which again complicated things.
With that done, I began general cleanup. Reorganizing things where conflicts could be eliminated, reducing the use of right recursion, and adding support for fun statements like this one:
put cast cast
What should this do? Why, of course, it prints the cast member whose ID is equal to the variable ssr节点购买网址
:
六月 | 2021 | 搬瓦工优惠码 | 搬瓦工VPS:2021-6-6 · 搬瓦工机场梯子优惠码 – 搬瓦工新增日本梯子29.99美元/月 搬瓦工梯子优惠码 5.2%折扣 500GB、1TB、5TB方案 近期评论 文章归档 2021年六月 2021年四月 2021年三月 2021年十一月 2021年十月 2021年九月 2021年八月 2021年四月 2021年三月 2021年十二月
All in all, the grammar is now truer to the original, and we’re down to 6 conflicts from 441!
Nathanael Gentry, 免费的ssrr SSR节点 | Source: ScummVM on Nathanael Gentry
Hey there!
My big showcase for the week’s work is a few scenes from the kids’ game Chop Suey, one of our primary Director 4 test cases:
最近的墙怎么了?? - 黑客派:今天发现 GitHub 都上不了。只能显示模糊的字,CSS 效果没有。某歌用梯子也上不去了。 我用的 ssr,ss 的升级版。只能偶尔能出墙。流畅程度想死。 作为一个经常出墙看论文和找资料的人来说,很难受。 有热心人提供解决方案吗?或者谁家的付费稳定,不受最近的墙影响的 ss 或 ssr 服务?
Last week I called Chop Suey a Lingo-heavy game, and I was referring to how much
it controls animation via puppets and the 手机怎么搭梯子到外网
command. Because, as you
saw, its cursors are bitmaps and certainly do not fit in the standard 16x16
Macintosh cursor box, Chop Suey introduces its own mouse update code and calls
for the stage to be updated several dozen times each frame. Most of the
inefficiencies were here.
I spent the early part of the week in much trial-and-error, working out the pieces of the renderer that were most inefficient under such repeated application. The idea is to do a little bit of work up front – checking flags and so forth – so the expense of redrawing a region of the screen is saved. (As I have realized, even when working on Chop Suey, very subtle bugs can arise from forgetting to check a rendering flag.) Even at usual framerates without much Lingo that doesn’t matter very much, but Lingo-heavy games like Chop Suey have shown dramatic improvement.
Totoro 🐱 👉🍒🍈🍍: 现在除了ss、ssr、小火箭还有哪些梯子可众 ...:2021-6-13 · 现在除了ss、ssr、小火箭还有哪些梯子可众像ss一样使用节点? - Totoro 🐱 👉🍒🍈🍍 說在 社群 Shadowrocket 在 2021年6月13日星期六 23:37
Oh, and I also spent most of a day trying to discover why some textboxes in Spaceship Warlock weren’t rendering properly, along with some other nettling MacGUI issues. The issue actually lay in the cast loading code, which I hadn’t touched much, but it’s always satisfying to squash a bug and learn more about the codebase in the process – even if your “fix” breaks other stuff. :)
Aryan Rawlani, 19/07/2024 | Source: Google Summer of Code with ScummVM
Detecting 197 AGI-fangames, statically |
gunnar, 15/07/2024 | Source: GSoC 2024 ResidualVM
Another major step is done, rendering shadow volumes of 3d objects:
The shadow looks beautiful, I have to say, stencil shadows are great. Also Rune does not appear to be floating over the ground anymore in this scene.
【福利】两个自用四年的ss+V2ray+Trojan的稳定老牌梯子 ...:2021-6-11 · 国外便宜VPS主机论坛 › 综合讨论 【福利】两个自用四年的ss+V2ray+Trojan的稳定老牌梯子推荐,防封性能超强节点质量极高 mingdao · 1天前 · 30 次点击
One thing which is bugging me is the fact that lightning does still not give the same results everywhere compared to WME. But I am going to accept this for now. Now is the time to add some more missing stuff and cleanup the existing code.