Completely random would be the answer as to how I came across this game. I paid a visit to GOG and picked this up for the price of 89 pence. My initial plan was to find an old game with some form of online mode and attempt to create a program to send chat messages in networked games, from outside of the game. That may be still to come, but this simple bug piqued my interest.
Ghidra is my weapon of choice; I wasn't born of emerald mine money so I can't quite stretch to IDA Pro. Ghidra nonetheless does the job, and upon analysing our executable I like to take a quick look at the strings for anything unusual. I searched said strings for the term "chat," which was fitting of my original goal, but what I would find would sidetrack me.

A string, labeled "SWINE_GAMEVIEW_CHAT_CHEAT", following that leads to more interesting strings (shown below), and with a quick Google search I head over to https://www.ign.com/wikis/pc-cheats/S.W.I.N.E._Cheats to confirm that these are indeed cheats for this game.

Well, let's have a quick game and try these cheats I think to myself. I load into a single player game and press enter and nothing. The webpage says
To get the console to appear, press SHIFT + ENTER. Then enter the code from the list below to turn on the corresponding cheat:
and so I try that, still nothing. I press every keyboard button, every keyboard button with shift held, nothing. Well, now we have a new objective, get these cheats working. I follow the call of chat cheat string to a function listed as so
bool __thiscall SGameView::OnKeyDown(SGameView *this,int param_1)
The function has two arguments, the second of which is currently unknown, but I notice the function contains a switch case, which takes param_1 as its argument. One of the cases, the one that seems to call the chat box is case 0xd (shown below)
case 0xd:
bVar6 = SCampaign::IsMultiMode(Campaign);
if (bVar6) {
if (this->bChat != false) goto LAB_004df521;
(**(code )((this->ChatEditBox).padding + 0x74))(1);
bVar6 = SCampaign::IsMultiMode(Campaign);
if (bVar6) {
pSVar11 = SWorld::GetPlayer((SWorld *)this->World,this->World->padding);
if (pSVar11->Team < 1) {
pcVar13 = "SWINE_GAMEVIEW_CHAT_TOEVERYBODY";
goto LAB_004df4a3;
}
((code )((this->ChatCheckBox).padding + 0x74))(1);
}
else {
pcVar13 = "SWINE_GAMEVIEW_CHAT_CHEAT";
LAB_004df4a3:
SVar4 = *Board;
pcVar13 = GetText(pcVar13);
((code )((int)SVar4 + 0x2c))(this->ChatTextFrame,0,1,pcVar13);
((code **)((this->ChatCheckBox).padding + 0x74))(0);
SCheckBox::SetCheck(&this->ChatCheckBox,false);
}
My guess here is 0xd is related to the key pressed and checking on https://www.ascii-code.com/ I find 0xd is carriage return. My reading of this function suggests that if Enter is pressed we enter this function. bVar6 is setup to True or False depending on whether the game is in multiplayer mode, which is where our problem lies. There are 2 checks for this but the first one skips the rest of the function if it returns false so we can never get to the chat cheat box. Below we see the assembly for that original bVar6 check.

I believe if we NOP the JZ instruction at 004df43a the loop will run correctly. It will still enter and process the secondary IsMultiMode check so we should then be able to enter cheat codes in single player and still access the chat in multiplayer. Our modified function looks as so

The time of reckoning is upon us, the game loads as normal which is always a good start after modifying an executable. Entering single player mode we pick the mighty rabbit faction and skip the cutscenes. Tap the enter key and hold our breath.

Thankfully, in this game you can play a multiplayer game on your own so I can check if the chat function works there too and it does.
A strange little bug that. I don't know if it was deliberately patched out by the developers for the remastered version or if it was unintentional during the remastering process, but it was nice to stumble upon the issue.