Difference between revisions of "User talk:Pokechu22"

From Dolphin Emulator Wiki
Jump to: navigation, search
(ifexist vs Template:Exist: re)
(Debugging Symbols)
 
(4 intermediate revisions by 2 users not shown)
Line 3: Line 3:
  
 
:Thanks.  I actually saw the warning but didn't know what to make of it.  (I also didn't see any uses of Template:Exist in the history of Template:Infobox VG so I assumed it just never had been tried before, but I just didn't look beyond the first 50 entries so I missed [https://wiki.dolphin-emu.org/index.php?title=Template:Infobox_VG&diff=146805&oldid=142455 your edit]).  IMO, having 243 entries in an error page where pages where the problem is actually present is visible is much preferable to having thousands of entries on a page that also is useful for knowing where to contribute.  But I don't know if the error actually causes problems on the server end.  (My guess is that the pages (I think I saw that Template:Exist uses pages as templates or something like that?) that trigger the infinite loop are those that actually have multiple versions, where the other version is transcluding the original version again.  But I'm not sure if that's actually the case.  If it is the case, I wonder if there's a way to detect that it's already at one level of transclusion and just stop?)  --[[User:Pokechu22|Pokechu22]] ([[User talk:Pokechu22|talk]]) 06:17, 24 November 2019 (CET)
 
:Thanks.  I actually saw the warning but didn't know what to make of it.  (I also didn't see any uses of Template:Exist in the history of Template:Infobox VG so I assumed it just never had been tried before, but I just didn't look beyond the first 50 entries so I missed [https://wiki.dolphin-emu.org/index.php?title=Template:Infobox_VG&diff=146805&oldid=142455 your edit]).  IMO, having 243 entries in an error page where pages where the problem is actually present is visible is much preferable to having thousands of entries on a page that also is useful for knowing where to contribute.  But I don't know if the error actually causes problems on the server end.  (My guess is that the pages (I think I saw that Template:Exist uses pages as templates or something like that?) that trigger the infinite loop are those that actually have multiple versions, where the other version is transcluding the original version again.  But I'm not sure if that's actually the case.  If it is the case, I wonder if there's a way to detect that it's already at one level of transclusion and just stop?)  --[[User:Pokechu22|Pokechu22]] ([[User talk:Pokechu22|talk]]) 06:17, 24 November 2019 (CET)
 +
 +
::I think it's as simple as one page's call to Infobox transcluding another page's call to Infobox (remember that Infobox VG is used on every single game page), or otherwise just having a template that calls itself in any way with or without transclusion, MediaWiki hates loops like that because it's designed to not be Turing complete. I didn't look too deeply but I don't think there's any other ways to detect the existence of a page besides these two methods. Maybe ifexist can be tweaked to not create redlinks on the server side, since it seems pretty useless to do that, but I don't know anything about that. - [[User:Xerxes|Xerxes]] ([[User talk:Xerxes|talk]]) 19:47, 24 November 2019 (CET)
 +
 +
== Debugging Symbols ==
 +
 +
Are you sure Nerf N-Strike Elite has symbols in nerf.elf? It doesn't seem to be a regular ELF file. Interestingly, the other two games in the Nerf series do seem to have debug symbols in their ELF files. [[User:Flacs|Flacs]] ([[User talk:Flacs|talk]]) 03:52, 11 January 2020 (CET)
 +
 +
:Yep, it does seem to have symbols in nerf.elf (when compared to main.dol).  I was able to import it into ghidra and get symbols, which didn't happen with main.dol (which I think has the same code in it otherwise), and running <code>strings nerf.elf | less</code> and going to the end shows very symbol-looking things like <code style="word-break: break-all">insert__Q23std151__vec_deleter<Q210Metrowerks42range_map_entry<w,Q33std10ctype_base4mask>,Q23std69allocator<Q210Metrowerks42range_map_entry<w,Q33std10ctype_base4mask>>>FPQ210Metrowerks42range_map_entry<w,Q33std10ctype_base4mask>RCQ210Metrowerks42range_map_entry<w,Q33std10ctype_base4mask>Q210Metrowerks11int2type<3></code> (and more typical SDK functions).  Both main.dol and nerf.elf have "ELFPATCH/WII v1.0 by Marc Bannister (based on Morton's ELF Compressor)" and "Copyright 2007 Electronic Arts Europe" near the start.  Note that I have a US copy of the game (RL6E69, SHA-1 e5f38d127850eb3d69daca411102d1dc2ddd9370). --[[User:Pokechu22|Pokechu22]] ([[User talk:Pokechu22|talk]]) 20:15, 11 January 2020 (CET)

Latest revision as of 21:15, 11 January 2020

ifexist vs Template:Exist

Using Template:Exist in certain cases (like on Template:Infobox VG) causes MediaWiki to throw a recursive template loop error (see Category:Pages with template loops). This happens because Template:Exist functions off of transclusion while ifexist does not. That's why ifexist is used instead. I mentioned this on the Template:Exist documentation here though I know that's pretty hard to find and not very explanatory... The tradeoff was triggering an actual error on MediaWiki or creating a bunch of bad redlinks, I chose to silence the errors instead. Either is technically fine though, the errors don't show up on the pages or affect page output at all as far as I can remember besides the hidden error category. (As I understand it, the transcluded templates which trigger the error are not actually used, so page output is not affected.) - Xerxes (talk) 05:26, 24 November 2019 (CET)

Thanks. I actually saw the warning but didn't know what to make of it. (I also didn't see any uses of Template:Exist in the history of Template:Infobox VG so I assumed it just never had been tried before, but I just didn't look beyond the first 50 entries so I missed your edit). IMO, having 243 entries in an error page where pages where the problem is actually present is visible is much preferable to having thousands of entries on a page that also is useful for knowing where to contribute. But I don't know if the error actually causes problems on the server end. (My guess is that the pages (I think I saw that Template:Exist uses pages as templates or something like that?) that trigger the infinite loop are those that actually have multiple versions, where the other version is transcluding the original version again. But I'm not sure if that's actually the case. If it is the case, I wonder if there's a way to detect that it's already at one level of transclusion and just stop?) --Pokechu22 (talk) 06:17, 24 November 2019 (CET)
I think it's as simple as one page's call to Infobox transcluding another page's call to Infobox (remember that Infobox VG is used on every single game page), or otherwise just having a template that calls itself in any way with or without transclusion, MediaWiki hates loops like that because it's designed to not be Turing complete. I didn't look too deeply but I don't think there's any other ways to detect the existence of a page besides these two methods. Maybe ifexist can be tweaked to not create redlinks on the server side, since it seems pretty useless to do that, but I don't know anything about that. - Xerxes (talk) 19:47, 24 November 2019 (CET)

Debugging Symbols

Are you sure Nerf N-Strike Elite has symbols in nerf.elf? It doesn't seem to be a regular ELF file. Interestingly, the other two games in the Nerf series do seem to have debug symbols in their ELF files. Flacs (talk) 03:52, 11 January 2020 (CET)

Yep, it does seem to have symbols in nerf.elf (when compared to main.dol). I was able to import it into ghidra and get symbols, which didn't happen with main.dol (which I think has the same code in it otherwise), and running strings nerf.elf | less and going to the end shows very symbol-looking things like insert__Q23std151__vec_deleter<Q210Metrowerks42range_map_entry<w,Q33std10ctype_base4mask>,Q23std69allocator<Q210Metrowerks42range_map_entry<w,Q33std10ctype_base4mask>>>FPQ210Metrowerks42range_map_entry<w,Q33std10ctype_base4mask>RCQ210Metrowerks42range_map_entry<w,Q33std10ctype_base4mask>Q210Metrowerks11int2type<3> (and more typical SDK functions). Both main.dol and nerf.elf have "ELFPATCH/WII v1.0 by Marc Bannister (based on Morton's ELF Compressor)" and "Copyright 2007 Electronic Arts Europe" near the start. Note that I have a US copy of the game (RL6E69, SHA-1 e5f38d127850eb3d69daca411102d1dc2ddd9370). --Pokechu22 (talk) 20:15, 11 January 2020 (CET)