IRC logs for #openttd on OFTC at 2025-08-29
⏴ go to previous day
00:05:57 <dh1> there's a concept in tax law of a general anti-avoidance rule which is basically a catch-all "look, it doesn't matter what this is technically, we know tax avoidance when we see it" and i feel like an analogous kinda policy works best with LLM stuff
00:07:21 <dh1> i have bastardised the explanation of the GAAR there but this is irc so who gives a shit
00:34:16 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
01:54:17 *** Wormnest has joined #openttd
02:01:08 *** Wormnest has quit IRC (Quit: Leaving)
03:00:06 *** herms has quit IRC (Quit: bye)
03:13:20 *** Zathras_11 has joined #openttd
03:16:52 *** Zathras has quit IRC (Ping timeout: 480 seconds)
04:39:00 <DorpsGek> - Update: Translations from eints (by translators)
05:13:44 *** WormnestAndroid has quit IRC (Remote host closed the connection)
05:13:47 *** WormnestAndroid has joined #openttd
05:31:06 *** dh1 has quit IRC (Quit: My Mac has gone to sleep. ZZZzzz…)
06:14:31 *** keikoz has quit IRC (Ping timeout: 480 seconds)
07:28:30 <yiffgirl> peter1138: this is surprisingly listenable
07:29:08 <yiffgirl> oh my god, this isn't the only four ears video they've done
08:09:48 <ahyangyi> Peter, is there stuff I can read about the existing blitters. 14547 "fixed" my issue but I feel very unsure about it.
08:11:12 *** orudge` has joined #openttd
08:11:12 *** ChanServ sets mode: +o orudge`
08:24:04 <LordAro> ahyangyi: the code and its history is probably the best you can do
08:40:33 <ahyangyi> Yeah, my patch is based on the part of the code I read, and when I look at its history I see Peter.
08:44:12 <andythenorth> is there a size limit to railtype props 0x0E and similar? They're `B n*D` in the spec
08:44:36 <andythenorth> I need to autogenerate labels based on all the possible combinations permitted in the standardised label scheme
08:47:06 <andythenorth> it's a countable number of combinations I think
08:47:42 <andythenorth> I think it's `ASCII character count * 5`
08:52:52 <ahyangyi> The set of strings of arbitrary length is countable, so no worries 😛
08:54:08 <peter1138> The translation table maximum length is currently 255.
08:54:39 <peter1138> Wait, no it's not, I slyly raised it.
08:55:54 <peter1138> You can only set 255 in one go, but don't need to start at 0 any more.
08:56:18 <peter1138> The index into it is always a byte, so... uh, 256 limit.
08:57:01 <peter1138> As for Prop 0E etc, the size limit is also a 255 entries.
08:57:31 <peter1138> But as it's a raw label, not an index, you can use a different set of labels in each action.
08:57:59 <peter1138> These properties are, oddly, additive, so you can also just keep setting it.
08:59:44 <andythenorth> in principle the second character of the standardised scheme has 128 valid entries
08:59:51 <andythenorth> unless we don't allow full ASCII
09:00:30 <peter1138> Are you being weird again?
09:01:23 <andythenorth> not intentionally, I have an idea that simplifies something
09:01:35 <andythenorth> but then I'm trying to be completionist about all cases
09:01:40 <andythenorth> which is the opposite of simple
09:06:01 <ahyangyi> andythenorth: Do we allow non-ASCII characters?
09:06:16 <ahyangyi> I know we do for labels in general, but I don't know much about rail types
09:07:45 <andythenorth> the label is a dword
09:08:28 <andythenorth> I don't know how the bytes map to ordinals, way out of my depth
09:09:10 <andythenorth> TL;DR I just want to provide compatibility from Horse trains to some of the most popular railtype grfs
09:09:17 <andythenorth> which is within scope
09:09:18 <peter1138> In the spec they are just 4 bytes of anything.
09:09:37 <peter1138> Even a NUL-byte is permitted but I would suggest to avoid that.
09:10:17 <peter1138> It's only badges which are different, as they are variable length strings. Technically they can have any non-NUL character still.
09:12:39 <andythenorth> ok so the standardised scheme provides an unrestricted byte for 'Speed limit/appearance class'
09:12:51 <andythenorth> the other bytes all have practical constraints applied
09:12:52 <peter1138> All 256 combinations.
09:13:17 <peter1138> If you want to be completionist, you need to account for all 4+ billion combinations.
09:14:12 <andythenorth> which would obviously be silly
09:21:10 <andythenorth> well the second byte can't be limited to just A-E
09:21:16 <andythenorth> the spec permits arbitrary characters
09:21:29 <andythenorth> JP+ uses entries beyond 'E'
09:47:34 <andythenorth> ok so A-Z might be reasonable to support
09:48:15 <andythenorth> then narrow gauge / standard gauge, so 270
09:51:46 <ahyangyi> only supporting those that's actually used
09:52:56 <ahyangyi> Sure that's not future proof, but there are many ways to achieve future-proofing, such as releasing a new version of horse
09:53:58 <andythenorth> it's an option yes
09:54:06 <andythenorth> there's no quick way to detemine what's actually used
09:54:18 <andythenorth> other than loading all the railtype grfs and doing `dumpinfo railtypes`
09:54:32 <andythenorth> I've asked lots of times in channels where players and authors are present
09:54:42 <andythenorth> but nearly all authors don't understand railtypes
09:55:26 <andythenorth> but I have the stats for which railtype grfs are most used
10:10:00 <peter1138> Should've left it at 16 types.
10:40:35 *** dh1 has quit IRC (Quit: My Mac has gone to sleep. ZZZzzz…)
11:18:43 <andythenorth> 4 billion or bust
11:51:18 <peter1138> Bad people, but could be interesting to see the outcome.
11:53:12 <jfkuayue> My mother just relies on AI for nearly anything, even including my postgraduate recommendations
11:54:03 <andythenorth> it's potentially a phenomenal control channel
11:54:10 <andythenorth> much better than TV or tabloid newspapers
11:54:16 <andythenorth> which were the traditional means
12:00:10 <andythenorth> the question is whether it can be tuned enough to control populations reliably
12:00:52 <andythenorth> one of the hallmarks of gaslighting: if you recognise you're being gaslit, you're no longer being gaslit
12:43:15 <ahyangyi> The modern alternative to AI is tiktok
12:43:33 <ahyangyi> And somehow I think AI is slightly more trustworthy
13:14:23 *** toktik has quit IRC (Remote host closed the connection)
13:25:49 *** toktik has quit IRC (Remote host closed the connection)
13:43:34 <talltyler> \* shakes fist at clouds *
14:01:25 *** Flygon has quit IRC (Remote host closed the connection)
14:28:40 <rito12_51026> peter1138: You've made my day
15:04:28 *** Wormnest has joined #openttd
15:05:21 <audigex> peter1138: Weirdly I haven't been in the UK once since that law came into effect. At least as far as internet connectivity goes...
15:06:28 <peter1138> Well it's only been a month.
15:07:48 *** gelignite has joined #openttd
15:09:19 <audigex> peter1138: I don't care who painted it, that painting they use as an example is shite whether it's AI or human
15:12:54 <andythenorth> essay was all a bit baudrillard
15:12:58 <andythenorth> desert of the hyperreal
15:49:57 *** orudge` has quit IRC (Quit: Goodbye.)
16:35:12 *** gelignite is now known as Guest25325
16:35:12 *** Guest25325 has quit IRC (Read error: Connection reset by peer)
16:35:15 *** gelignite has joined #openttd
16:46:42 *** toktik has quit IRC (Remote host closed the connection)
17:29:18 *** gelignite has quit IRC (Read error: Connection reset by peer)
18:35:47 *** gelignite has joined #openttd
18:43:32 <ahyangyi> I feel the human act of picking a random AI generated image and writing a whole essay about how it's meaningless, also gives the image some meaning.
18:43:32 <ahyangyi> But that's OK, because the message isn't about this particular AI generated image, but about AI generated images (and other media) in general.
18:43:32 <ahyangyi> Anyways, not an new idea. Duchamp was one century ago.
18:50:51 <andythenorth> wonder how what `railtype_available` does
18:51:48 <andythenorth> I want to disable Horse railtypes individually, if another railtype already handles the label in prop 0x1D
18:52:28 <peter1138> Better to just let them configure it.
18:52:53 <peter1138> If you did use act7/9 skips, then it would depend on load order.
18:53:09 <andythenorth> but configuring it can't be done during game
18:53:22 <peter1138> Why does it need to be done in game?
18:53:30 <andythenorth> players tend not to understand
18:53:37 <andythenorth> so then they have to be told in discord or reddit
18:54:02 <peter1138> IMHO you should make the railtypes a separate NewGRF.
18:54:13 <andythenorth> then they don't have the trains
18:54:18 <andythenorth> I was worried it would depend on load order 😐
18:54:44 <andythenorth> it would be simpler if there wasn't such a demand to consume all 64 slots
18:54:53 <peter1138> It's a more desirable failure case -- players should already be aware that things may not appear when the correct/compatible tracks are not availble.
18:54:58 <andythenorth> the disabling is mostly needed because Horse breaks other railtype grfs
18:55:33 <peter1138> Anyway, if no NewGRF railtypes are loaded, why don't you fall back to vanilla types?
18:55:48 <andythenorth> because I don't understand
18:56:02 <andythenorth> I seem to be way out on a limb, but that makes no sense to ne
18:56:33 <andythenorth> if I wanted to include another 10 RAIL engines, I'd have done that
18:56:38 <andythenorth> it's not very interesting
18:56:55 <andythenorth> the point of railtypes is to be able to do different types of vehicles
18:57:04 <andythenorth> not model every last variation of ballast colur
18:57:14 <peter1138> Okay, forget about vanilla fallbacks.
18:57:47 <andythenorth> the Horse case *only* arises with specific grfs with specific need to use ~all 64 slots
18:57:59 <peter1138> What happens at the moment when IH and JP+ Tracks are loaded?
18:58:10 <peter1138> (In both possible load orders)
18:58:21 <andythenorth> nobody so far has been able to describe the problems as repros
18:58:29 <andythenorth> just "it's wrong"
18:59:13 <andythenorth> the current Horse parameter to disable railtypes isn't helping
18:59:30 <andythenorth> because JP+ has already tried to handle the Horse labels, mostly successfully
18:59:40 <peter1138> Sure, players are not GRF experts, and don't necessarily understand the behaviours.
19:00:04 <andythenorth> it's quite confusing actually, JP+ handles Horse trains well, explicitly
19:00:14 *** dh1 has quit IRC (Quit: My Mac has gone to sleep. ZZZzzz…)
19:00:19 <andythenorth> but the parameter to disable Horse railtypes is needed to not break JP+ (and some others)
19:00:44 <andythenorth> but when the Horse railtypes are disabled, the handling is *less* predictable as it relies on the NML fallbacks
19:01:02 <rito12_51026> peter1138: He could fall back metro onto Maglev and narrow gauge onto monorail
19:01:14 <peter1138> That would be different...
19:01:16 <andythenorth> I appreciate the humour
19:02:29 <peter1138> That reminds me, there's a new Look Mum No Engine video to watch.
19:02:48 <peter1138> Or I could watch Master Hellish trying to write a mod.
19:02:57 <rito12_51026> they just look similar enough
19:04:01 <andythenorth> if I define narrow gauge as NAAN, and another railtype grf defines it, what actually happens?
19:04:10 <andythenorth> are some properties replaced, and some additive?
19:04:32 <andythenorth> who wins the act3?
19:08:21 <peter1138> Well, if a NewGRF replaces a railtype, it... replaces it.
19:10:44 <andythenorth> with the exception of the properties that are additive...
19:13:27 <ahyangyi> That ominous comment
19:13:27 <ahyangyi> `// Animation colours don't work with alpha-blending.`
19:13:35 <andythenorth> so 0x0E, 0x0F and 0x1D are additive I think
19:13:42 <andythenorth> I should read openttd src eh
19:14:12 <ahyangyi> I still don't quite get what the 40bpp blitter does. My use case is company colour, not animation colour, so I don't understand what exactly don't work and why that affects company colours.
19:15:05 <ahyangyi> And why "speed up palette animation" while breaking company colour alpha blending is a worthwhile tradeoff...
19:16:28 <ahyangyi> Can I just apply the old fashioned AdjustBrightness for any palette index below `PALETTE_ANIM_START`?
19:17:50 <andythenorth> hmm my brain is melted
19:18:15 <peter1138> If it's additive then it will be added, yes.
19:18:42 <andythenorth> brain melt arises from trying to figure out how to disable things depending on other grfs
19:18:58 <andythenorth> and not get caught out by load order
19:20:44 <andythenorth> I can get a list of all grfs that will be active?
19:21:27 <andythenorth> wonder what this code was for
19:21:27 <andythenorth> ` if (railtype_available("IHB_") || (loading_stage == LOADING_STAGE_RESERVE)) {`
19:25:30 <peter1138> During reservation the railtype availability checks are dependent on load order.
19:25:58 <ahyangyi> I don't have time tonight, but I guess I will add those to the issue and continue tomorrow.
19:26:30 <ahyangyi> And I feel that I also need to care about animation colours to truly understand that blitter
19:29:24 <andythenorth> ok so the only way for Horse to not break railtype grfs really is a parameter
19:29:45 <andythenorth> or maybe I should detect the specific grfs by grfid
19:32:05 <ahyangyi> peter1138: Also, was this a comment on the same issue?
19:35:49 <peter1138> That's what I said.
19:39:18 <ahyangyi> I guess I should stop working on this
19:45:33 <ahyangyi> _zephyris: Thanks for the context (though I still don't understand why Peter answers a simple yes/no question with a "?")
19:57:12 <peter1138> What no idea what you are asking.
20:00:36 <ahyangyi> OK, let me ask again. Was your comment `For the company colour stuff the map is calculated and just refers to the game's palette table for unchanged entries.
20:00:36 <ahyangyi> ` related to the bug #14528, linked below for your convenience?
20:00:37 <ahyangyi> C. You do not think it is a bug at all.
20:00:37 <ahyangyi> D. You do not think I should work on this bug at all.
20:00:39 <ahyangyi> E. Other responses (please specify)
20:02:36 <peter1138> Uh... absolutely no relation to any of that. That comment was about the custom company colours PR, IIRC.
20:03:54 <ahyangyi> ( though that's just `B. No` )
20:04:26 <peter1138> Am I going to have to quit IRC as well?
20:08:56 <andythenorth> was it lunch yet?
20:10:58 <peter1138> andythenorth, having late dinner.
20:17:03 <andythenorth> Maybe it’s naptime
20:27:03 <andythenorth> 65536 railtypes, but only 16 are buildable?
20:29:45 <peter1138> THat's a somewhat large bitmask.
20:40:15 <Rubidium> nah, you don't need a large bitmask. You just need to have a byte per railtype to define the bit it uses, and 0xFF for 'not used'. So once you used the 16th you can't build any more rail types.
21:00:25 *** tokai has quit IRC (Ping timeout: 480 seconds)
21:04:14 <_glx_> IIRC the only real indication of too many types is the weird newgrf error box
21:04:43 *** ChanServ sets mode: +v tokai
21:11:59 <peter1138> Depends how you want to handle compatible railtypes. If I only place ELRL, that will use a bit, but I should be able to use RAIL as well. WHich may or may not also need a bit.
21:32:22 *** keikoz has quit IRC (Ping timeout: 480 seconds)
21:37:15 *** toktik is now known as Guest25350
21:42:46 *** Guest25350 has quit IRC (Ping timeout: 480 seconds)
21:58:32 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:09:42 *** ryandtw has quit IRC (Quit: User went offline on Discord a while ago)
continue to next day ⏵