GCN Modding Limitations?

RemnantKnight56

Well-Known Member
OP
Newcomer
Joined
Jan 15, 2020
Messages
65
Trophies
0
Age
24
XP
521
Country
United States
I'm curious about the limitations of modding a game. I know that things like swapping assets and changing up values can be done. I know that whole levels can be made from pre-existing assets. But can that go farther? Can you, say, add online functionality to games that never had it? Can you add support for the Game Boy Advance in some way? Maybe allow reading from an SD card reader? I have some ideas for projects, but I don't want to bother fantasizing about it if it's simply impossible. I know from the hardware side that it should, but what do you think?
 
  • Like
Reactions: AncientBoi

Kwyjor

Well-Known Member
Member
Joined
May 23, 2018
Messages
4,323
Trophies
1
XP
4,476
Country
Canada
We live in an era where the complete source code for an N64 game was re-created through an enormous feat of reverse-engineering. Anything is possible – but only if you're willing to put in absolutely ridiculous amounts of tedious, difficult work for a very small audience.

It is a little strange that after all these years, it seems no one has quite managed to figure out Datel's trick for making bootable GC discs (see recent discussion here), but it's probably just a matter of time.

Maybe allow reading from an SD card reader?
Surely you are aware that this is already done..?
 
  • Like
Reactions: AncientBoi

RemnantKnight56

Well-Known Member
OP
Newcomer
Joined
Jan 15, 2020
Messages
65
Trophies
0
Age
24
XP
521
Country
United States
We live in an era where the complete source code for an N64 game was re-created through an enormous feat of reverse-engineering. Anything is possible – but only if you're willing to put in absolutely ridiculous amounts of tedious, difficult work for a very small audience.

It is a little strange that after all these years, it seems no one has quite managed to figure out Datel's trick for making bootable GC discs (see recent discussion here), but it's probably just a matter of time.

Surely you are aware that this is already done..?

I'm sure a whole lot of work would be needed...but I'm just thinking of the possibilities. One thing I thought of was allowing games like Mario Kart: Double Dash, Mario Party or F-Zero online, using the broadband adapter. I'd start small, like just concocting programs that have basic functionality, like leaderboard updates. But maybe it could go further, like downloading DLC to the memory card and having that affect the game. Sonic Adventure DX could have the content lost in the Dreamcast transition returned to it if that could work!

But, that's all a pipe dream. I know how to program a bit, but I definitely don't have the experience for large projects like this yet. Hopefully in the future the underutilized features of the Gamecube can be made use of in this small community of ours.

And yes, I know files can be read from the SD card reader. I really meant for things like using photos and music that could be stored on it in new ways, like changing background music or creating an avatar picture. Those sorts of things would be more for a homebrew game rather than a mod, but still.
 
  • Like
Reactions: AncientBoi

Kwyjor

Well-Known Member
Member
Joined
May 23, 2018
Messages
4,323
Trophies
1
XP
4,476
Country
Canada
One thing I thought of was allowing games like Mario Kart: Double Dash, Mario Party or F-Zero online, using the broadband adapter.
Double Dash launched with LAN capability, and people were playing it online not long after its release – or trying to, anyway. (Come to think of it, I suppose that might be what led Nintendo to use Gamespy's technology for Nintendo WFC - but that's just speculation.)
http://gametyrant.com/news/a-bounty-has-been-made-to-fix-the-lan-component-of-mario-kart-double-dash

Other games would almost certainly be easier to play online with an emulator than it would be to persuade them to work with the broadband adapter.
 
Last edited by Kwyjor,
  • Like
Reactions: AncientBoi

RemnantKnight56

Well-Known Member
OP
Newcomer
Joined
Jan 15, 2020
Messages
65
Trophies
0
Age
24
XP
521
Country
United States
Double Dash launched with LAN capability, and people were playing it online not long after its release – or trying to, anyway. (Come to think of it, I suppose that might be what led Nintendo to use Gamespy's technology for Nintendo WFC - but that's just speculation.)
http://gametyrant.com/news/a-bounty-has-been-made-to-fix-the-lan-component-of-mario-kart-double-dash

Other games would almost certainly be easier to play online with an emulator than it would be to persuade them to work with the broadband adapter.

I agree that it would be easier just to use an emulator to do this...but even with that, I think games can be modded to do some new things, like allowing more players in a game of F-Zero, or allowing Four Swords Adventures to connect with other Gamecubes instead of requiring a connection to a GBA for multiplayer.

Another idea was to use the Gamecube to allow the GBA to play online. Maybe it could emulate the Link Cable connection, but knowing how finicky that is, I'm not sure if it could be done if even Emulators can't do it. I guess if games were made specifically for that, it could work.
 
  • Like
Reactions: AncientBoi

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,796
Trophies
3
XP
28,413
Country
United Kingdom
I'm curious about the limitations of modding a game. I know that things like swapping assets and changing up values can be done. I know that whole levels can be made from pre-existing assets. But can that go farther? Can you, say, add online functionality to games that never had it? Can you add support for the Game Boy Advance in some way? Maybe allow reading from an SD card reader? I have some ideas for projects, but I don't want to bother fantasizing about it if it's simply impossible. I know from the hardware side that it should, but what do you think?

I would classify some of those examples of hypotheticals as easier than some things I have seen done by swapping assets and changing up values.

They also vary massively. Adding a basic online high score board. Trivial really, could probably walk in knowing my general ROM hacking skills and have it done... midnight now so might just be getting light.
Adding local co-op multiplayer and having it work on laggy internet...
https://www.gamasutra.com/view/feature/3374/the_internet_sucks_or_what_i_.php is very old (some 22 years or so at this point) but just as relevant today as it was back then and will continue to be until... physics as we know it takes a break.
GBA support. Coding in a new game it speaks to in link mode... hard. Coding in some kind of controller, map and item screen (think Final Fantasy Crystal Chronicles)... far easier.
SD reader. The GC memory ports already have adapters, coding something to pull a file from it, maybe write a save. Back to that just as it is getting light thing really. Some kind of complicated interplay with a nice database on the SD card... bit harder if I also have to understand the game well enough to do it.


Anyway I have tried to categorise difficulties in different styles of mods for the layman before and don't think I have ever really succeeded. Most ROM hackers will be able to categorise a project in very short order, better ones maybe even having some system specific knowledge*, but as far as teaching it... that is a bit harder.

Your limitations are really what the system is theoretically capable of (as a general rule if a game/homebrew does it then go with that, you can however spend time contemplating the limits of the hardware if you want like you are the demoscene/gamecube equivalent of http://www.catb.org/jargon/html/story-of-mel.html and may get further still), I will skip the what emulators allow that might not work on real hardware for now (there are those doing high res texture replacement though). The less you have to change the game the easier it gets, barring the devs having done something to your target game that makes it hard for whatever reason -- compression, odd coding styles, already brushing up against processing limits of the system, used all the space available on the disc), for instance you can change tetris to be a MMORPG with visual novel elements if you like but you will be in for the long haul (and anybody sensible would say make it as a homebrew game instead).
So yeah
1) Working within the parameters established by the game and probably being light on any assembly work.

2) Working within the general bounds of a game.

Edges of 1) and 2) get very blurry as devs do things like compression or complicated coding setups that punt it either way, or some superfans make tools to allow people to do hacks (changing say mario kart without knowing the model format, collisions, nature of the AI navigation, animations, pickup placement and more is going to be a long one, if someone learns all that and codes up a 3d model viewer/editor then you might reduce it to "knows how to 3d model edit and use object placer like anybody that has ever played an RTS game).

3) You start colouring way outside the lines or massively changing functionality.


*on the DS the vast majority of games will use the SDAT sound format. This then means various things you can do with it that would be nightmare hacks on the NES or SNES where devs could and would write their own custom engines from the ground on up. To that end I can say things like replacing audio, unless it does not use SDAT but even then you still stand a reasonable chance, is likely easy.
 

RemnantKnight56

Well-Known Member
OP
Newcomer
Joined
Jan 15, 2020
Messages
65
Trophies
0
Age
24
XP
521
Country
United States
@FAST6191
Thanks for this post, and that article about coding with the internet in mind was very helpful. Turns out I had thought along the same lines the author had, and, well...I might just get the same problems. Now I'm beginning to see why Double Dash online play is so unreliable.

Well, I guess it depends on the game and how demanding it is on whether or not it would be worth it to implement online play. Maybe new LAN play options could still be practical if nothing else. I know there's at least a few games that would be nice to have more players, like F-Zero, Wave Race or Sonic Riders. Maybe less demanding online tasks could work, such as leaderboards, or reimplementing Sonic Adventure DLC, or maybe something like downloading Animal Crossing towns instead of reading from Slot B. Things like that would probably be a lot more practical to accomplish than implementing online multiplayer in games that never had it...as fun as it might be.

I'll still need to do plenty of research before I take a plunge into a project like this. I might be better off just working on small homebrew projects that use all the unique features of the Gamecube instead of forcing other games to use them. One might say, 'Why not program for a modern console?' Why not? The Gamecube has features never reimplemented on another console, like the GBA Link cable and triggers. Sure, it's a lot harder...but it feels more fulfilling programming for something that feels more like a raw computer.

Another long post, but after reading 'The Story of Mel', it definitely reminds me that I want to program not just to complete a task, but to learn about the hardware that runs it. I'll continue figuring out if it's worthwhile hacking these games over just doing my own thing, but who knows? If I manage to bring online to one game, maybe someone else can bring online to another.
 
  • Like
Reactions: AncientBoi

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,796
Trophies
3
XP
28,413
Country
United Kingdom
If Story of Mel caught your eye then do make sure to go poking around the demoscene, and some of the fun things there
https://web.archive.org/web/20120204065621/http://www.theprodukkt.com/kkrieger
https://github.com/farbrausch/fr_public
Being an old but good example of some of the great fun going on there.
http://www.pouet.net/
https://trixter.oldskool.org/2015/04/07/8088-mph-we-break-all-your-emulators/
Those sorts of people are the ones that really get the most out of hardware these days if that is a goal of yours.

Also yeah ping is always going to be a killer in anything you want to be real time (turn your ping down and all that). Assuming you don't care to do big boy lag mitigations a la all your favourite head clicking games of the day then you do have other options like kicking something to AI*, savestates, sync pauses, streaming** and the like.

*going back to the difficulty thing. "I want to do a co-op hack"... yeah that might be hard if I have to add a second character + controls + inventory + health + AI behaviours towards them, rebalance the levels for it... Oh the game has a NPC follower (think Tails in Sonic)? Well that changes things somewhat, if you can have the player take over and the AI revert when nothing has been pressed for a while... Also the sort of thing that the ones that have coded a game or three or otherwise hacked them might think to look for.

**a while back we had a discussion wherein someone wanted to do GBA link play over the internet. The GBA is even worse for loose cables so no chance of that via some kind of tunnel/vpn. Emulating 2 GBAs on one system, grabbing a savestate from one remote and streaming the results back to the client on the other hand...

Also to be a pedant I do have to note the PC could link with the GBA -- there was a nice fork of VBA called VBA link real that did that one.


If I am sharing the good links then

https://docs.google.com/document/d/1iNSQIyNpVGHeak6isbP6AHdHD50gs8MNXF1GCf08efg/pub?embedded=true

https://web.archive.org/web/2016020...loads/332-aim-assist-cameraReady-v8-final.pdf
http://www.glprogramming.com/blue/

https://ece.uwaterloo.ca/~ece611/LempelZiv.pdf

for the GBA but
http://quirkygba.blogspot.com/2008/12/things-you-never-wanted-to-know-about.html

http://www.loekalization.com/mistakes.html

http://wiki.xentax.com/
http://wiki.multimedia.cx/index.php?title=Category:Game_Formats

https://www.plantation-productions.com/Webster/ is for the PC but still one of the best primers on assembly in general.
https://stuff.pypt.lt/ggt80x86a/asm1.htm is also good stuff.

https://web.archive.org/web/20080309104350/http://etk.scener.org/?op=tutorial

I assume you have a copy of http://hitmen.c02.at/files/yagcd/yagcd/frames.html already but I will link it anyway. Most will probably look at the Dolphin source code today for gamecube stuff but that still has a place for me.

Likewise I assume you have otherwise encountered defcon, c3 (check out the "ultimate talk" series where they cover various game consoles), black hat, derbycon and all the rest of the hacker conferences, GDC (the post mortem series being a favourite, though other talks are good) and also don't mind the ars technica war stories series.
 

RemnantKnight56

Well-Known Member
OP
Newcomer
Joined
Jan 15, 2020
Messages
65
Trophies
0
Age
24
XP
521
Country
United States
@FAST6191
This is all great stuff, and it all seems useful in some way! I'll say now that I'm primarily interested in making games for the Gamecube and GBA, but I'll probably go into Wii/DS at some point. Maybe I'll explore Sega's consoles too. I'd love to try using the Saturn's Dual CPU or the Dreamcast's VMU in cool ways. At least Assembler is a shared language among all of them.
 
  • Like
Reactions: AncientBoi

RemnantKnight56

Well-Known Member
OP
Newcomer
Joined
Jan 15, 2020
Messages
65
Trophies
0
Age
24
XP
521
Country
United States
That's kind of like saying fire is a common tool in welding.

Have you learned much programming in general?

I have, actually. I know C++, and I've coded in a bit of Assembly for my Hardware Engineering class in college. I guess it was a bit much to say that Assembly could help with programming in general, as the different consoles all have their own variation of it. I meant that learning one could make it easier to learn others.

While I do know how to program, I'm still an amateur. I've only gone through my first year of Software Engineering in college. That's more than many others who want to mod, though. I know there's many who ask how to mod a game without any knowledge of how to program.
 

RemnantKnight56

Well-Known Member
OP
Newcomer
Joined
Jan 15, 2020
Messages
65
Trophies
0
Age
24
XP
521
Country
United States
That's kind of like saying fire is a common tool in welding.

Have you learned much programming in general?

I have, actually. I know C++, and I've coded in a bit of Assembly for my Hardware Engineering class in college. I guess it was a bit much to say that Assembly could help with programming in general, as the different consoles all have their own variation of it. I meant that learning one could make it easier to learn others.

While I do know how to program, I'm still an amateur. I've only gone through my first year of Software Engineering in college. That's more than many others who want to mod, though. I know there's many who ask how to mod a game without any knowledge of how to program.
 
  • Like
Reactions: AncientBoi

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,796
Trophies
3
XP
28,413
Country
United Kingdom
Thankfully you started now. We, or go look at almost any talk from the security industry, have often found university level courses do all they can to beat out any kind of hacker mindset from the pupils.

Choice talk, there are longer and shorter versions from the same guy

Another that provides another spin


As far as assembly. I do agree with the learn one and you can learn another, learn two and you can learn three and after that it all starts looking pretty similar*.


*I am sure you could hop from 6502 (NES among many others http://6502.org/tutorials/6502opcodes.html ) to z80 (Master system, more or less original gameboy https://bgb.bircd.org/pandocs.htm#cpuinstructionset , coprocessor in megadrive) to something equally old and well into the RISC world and then struggle if thrust into fun SIMD extensions in modern X64 ( https://www.felixcloutier.com/x86/ ) and all the branch prediction stuff. At the same time it is all mostly still just variations on a theme -- you are still going to have maths (and unlike some processors noted above you might have a divide function to play with, and more generally is going to be the same maths operations you do in spreadsheets, high level languages, Boolean logic/general digital electronics and such), you are still going to have memory/cpu management (even if unlike 6502 you now consider registers their own thing rather than instruction dependent things), you are still going to have program flow operations** (might even have the full complement of options -- the NES 6502 will struggle to do simple blind jumps, though that was corrected in later implementations of 6502 on other devices), just now what might have taken 50 instructions, a lookup table and a lot of time can be reduced to a nice matrix operation the CPU will handle for you http://problemkaputt.de/gbatek.htm#ds3dmatrixexamplesprojection in a few cycles that by dint of the orders of magnitude higher clockspeed actually takes less time than even starting on the old school methods).

However I would also say do be careful throwing around a phrase like assembly is common to things as most of programming is kind of about getting away from assembly as it is so device specific. You then risk serious misinterpretation if you do that.

Also if the GBA is a thing you care about http://www.coranac.com/tonc/text/asm.htm and the site/guide/book in general. http://members.iinet.net.au/~freeaxs/gbacomp/#BIOS Decompression Functions http://www.cs.rit.edu/~tjh8300/CowBite/CowBiteSpec.htm#Graphics Hardware Overview and I am assuming you have http://problemkaputt.de/gbatek.htm but linked for the forum searchers.

**interesting video at this juncture
 

RemnantKnight56

Well-Known Member
OP
Newcomer
Joined
Jan 15, 2020
Messages
65
Trophies
0
Age
24
XP
521
Country
United States
Alright, last question, then I'll be on my way. I went ahead and extracted the files from a Gamecube game, and I found the main DOL of it. The problem is that I don't know how to disassemble it. I'm familiar with how to compile with toolchains, and from what I can see, there is a disassembler in devkitpro. I just don't how to use it. I don't see any way of making a mod without it, so can I please get an explanation of how to do that?
 
  • Like
Reactions: AncientBoi

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,796
Trophies
3
XP
28,413
Country
United Kingdom
I am less familiar with DOL stuff to know the oddities as far as any custom or non standard compression they might have used.

Plenty of mods don't touch the assembly for systems either -- there is much you can learn from looking at files and experimenting there (burning discs to test things gets expensive, fortunately emulators and SD/USB loaders are a thing) and playing with basic cheat searches. Unless you meant I can't see a way to do a specific mod I want to do then OK, and more generally if you can make sense of assembly you can do a lot more either more precisely or more quickly.

Speaking of emulators then most would usually start there with whatever debugger options they might have -- far nicer to have an idea of the contents of registers/memory when your chosen instruction is activated, or what instruction/set of instructions led to an action you can use as a base (I may not know what instruction reduces my health if I am say making an invincibility mod but I can usually find health in RAM via cheat searches easily enough, and with the added bonus that doing the disassembly approach will also usually see me able to dodge the anti cheat options as well*) as well as likely having it decompressed or decrypted if that is a thing that needs doing (again unknown how much the GC does this -- it is old enough that encryption and obfuscation was not much of a thing but new enough that compressing your 2 meg binary did not make as much sense as it did on the NES but devs do dev things and it was certainly fast enough to do some compression worth speaking of). If you are doing GBA then you also know what mode the CPU is operating in (the GBA using an ARM7TDMI that has both ARM modes and THUMB, the latter being a cut down 16 bit instruction set that still has 32 bit registers and what a lot of games spend a lot, some reckon the vast majority, of runtime in).

*if a game say has an inverse value, or hidden value it cycles through then all but the most stringent anti cheat will manipulate that at the same time as the on screen value you might have searched for and found.

Going further then most devkitpro assembly tools are aimed more at those that want to assemble things (most disassembled code will not be that) or that have debug flags left in when developing homebrew. This is not to say you can't make use of them but if you can find a more dedicated handler aimed at the would be ROM hacker then you will probably have a better time. I have seen a few plugins for IDA to handle GC/Wii specific DOL files but I am far less familiar with any more dedicated disassemblers like I have for the DS and other things I play with.

http://wiibrew.org/wiki/Debugging
http://wiibrew.org/wiki/Doltool
Most devkitpro conventions for disassemblers will be to use the objdump program specific to it (powerpc-eabi-objdump in this case, arm-eabi-objdump in the case of the GBA/DS and possibly 3ds offerings, maybe also whatever you need to do for the Starlet on the Wii that runs the IOS modules if you are going down that path).

More general for the format itself
http://wiki.tockdom.com/wiki/Main.dol
http://wiki.tockdom.com/wiki/DOL_(File_Format)

http://wiki.tockdom.com/wiki/Assembly_Code does include some commands you might try as well.
 
  • Like
Reactions: AncientBoi

RemnantKnight56

Well-Known Member
OP
Newcomer
Joined
Jan 15, 2020
Messages
65
Trophies
0
Age
24
XP
521
Country
United States
@FAST6191

I certainly see how that's done, and using the RAM of the system while it's running to determine where certain code is is useful to know. But how do I use functions like doltool or powerpc-eabi? Any time I use them in the Msys shell, it says that the command isn't found. Do I have to swap modes, or do I have to enter the command elsewhere.

Sorry, it feels like such a newbie question, but it's really difficult to figure out how devkitpro works if you aren't compiling or downloading files.
 
  • Like
Reactions: AncientBoi

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,796
Trophies
3
XP
28,413
Country
United Kingdom
The finding stuff from RAM thing is but one aspect of what is known as tracing in the ROM hacking world
https://www.romhacking.net/documents/361/ is for an older command line version of VBA on the GBA but I usually say anybody that can follow along with that and adapting it for something graphical like no$gba is probably ready to play. Though there are others doing things like https://wrongbaud.github.io/posts/ghidra-debugger/ with gdb and whatnot.
Fairly key to get it and the mindset behind it on lock if you are going to be playing game modder/ROM hacker, and one of those things seldom taught in more conventional programming (if you generally expecting to have the source code then you probably are not going to be thinking what aspect of the program/game I can find/know can I latch onto and work backwards from).

Anyway I usually have a Linux machine or Linux VM to play with. Been years since I had to tangle with Cygwin or mingw.
Wandering around on forums many usually have a fun time getting things to compile in the first place.That said if the compilation aspect works OK then it is probably not the usual paths issue that most have with such things, though I would still wonder.

I equally tend not to compile much with such things (I have not had an active install for years, even for the DS which I last hacked a game for two days ago) and have standalone tools or plugins for other more hacker oriented tools.
 
  • Like
Reactions: AncientBoi

RemnantKnight56

Well-Known Member
OP
Newcomer
Joined
Jan 15, 2020
Messages
65
Trophies
0
Age
24
XP
521
Country
United States
Hmm,..alright. I have found external disassemblers I could use, though only one of them is free. I'll have to look into acquiring another at some point, but hopefully this will be enough. I'm starting with a smaller Gamecube game to make it hopefully easier on me. It's not like I'm wanting to modify many values with this first step; I'm just wanting to start adding code at a strategic point so I can, say, have it make a connection with a GBA. Hopefully I can get it to do that.

Thanks for all the help. Hopefully it can come together and I can make a rom hack in an area I'm more confident in. I'm not much of an artist, but coding I can do sort of well. And adding GBA support in a game hasn't been done before in the rom hacking world, and it should be able to be done.
 
  • Like
Reactions: AncientBoi

Kwyjor

Well-Known Member
Member
Joined
May 23, 2018
Messages
4,323
Trophies
1
XP
4,476
Country
Canada
I'm just wanting to start adding code at a strategic point so I can, say, have it make a connection with a GBA. Hopefully I can get it to do that.
You may consider looking at Game Boy Interface, "gba-as-controller", and GBA Link Cable Dumper, each of which has source code available.
https://www.gc-forever.com/wiki/index.php?title=Game_Boy_Interface
https://gbatemp.net/threads/gba-as-gamecube-controller.539048/
https://github.com/FIX94/gba-link-cable-dumper/releases

And adding GBA support in a game hasn't been done before in the rom hacking world, and it should be able to be done.
You realize that this involves writing new code for the GBA in addition to modifying whatever you want to run on the Gamecube, right?
 
  • Like
Reactions: AncientBoi

RemnantKnight56

Well-Known Member
OP
Newcomer
Joined
Jan 15, 2020
Messages
65
Trophies
0
Age
24
XP
521
Country
United States
You may consider looking at Game Boy Interface, "gba-as-controller", and GBA Link Cable Dumper, each of which has source code available.
https://www.gc-forever.com/wiki/index.php?title=Game_Boy_Interface
https://gbatemp.net/threads/gba-as-gamecube-controller.539048/
https://github.com/FIX94/gba-link-cable-dumper/releases

You realize that this involves writing new code for the GBA in addition to modifying whatever you want to run on the Gamecube, right?

Yeah, I know. But one step at a time. Once I can get the game to recognize that a GBA has been connected, then I can focus on developing an application for the GBA for it to send. Then, if I can get the application working, I can get the game to send it. Once sent successfully, then I can have the game send more info for it to use, and have the GBA app change around certain values. There's definitely enough space for a GBA app, and I'm only wanting it to track positional information and certain save data, like currency or completed objectives. Maybe it could have a character respond to certain game events, but again, one thing at a time.
 
  • Like
Reactions: AncientBoi

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: https://youtube.com/shorts/WUOq1dlZWxI?si=LBlEJwZfwtWShljP lol Denmark can't handle the spice