MWMPM98

A personal fan project · not for sale · not affiliated with anyone

The 1998 game, rebuilt for a phone

I own a copy of Premier Manager 98 on PC. This project takes that copy apart — the executable, the art archives, the club and player database — and rebuilds the game as an Android app, screen by screen, against the original's own bytes.

It is a hobby, for my own use. Nothing is sold, nothing is monetised, and no original game data ships inside the app that did not come off my own disc. If you do not own the game, this is a read about how a 1998 football manager works under the bonnet, not a way to get it for free.

What "faithful" means here. Screens are measured against photographs of the real game running and diffed pixel-for-pixel — most of them land at 0 differing pixels. Rules are read out of the 1998 executable, not guessed: the transfer prices, the wage table, the insurance economy, the injury model, the ground-improvement costs and the instant-result match engine are all the original's own arithmetic, reproduced. Where something is genuinely unknown, the app leaves it blank and says so rather than inventing a number.
The Premier Manager 98 front-door menu: DATA BASE, MANAGER LEAGUE, PRO-MANAGER LEAGUE
The real thing — Premier Manager 98 running on the PC. Every screenshot on this page is the original game, not the port.

Download the Android build

latest build · 26 Jul 2026

Get the APK

One tap downloads the current build straight to your phone. Android only. You will need to allow "install from this source" when your phone asks.

Download PM98  ↓
file  pm98-9d943a6.apk · 60.3 MB · build 9d943a6 · uploaded 26 Jul 2026

In this build

  • The cup draw happens before the ties are played, the way the real game does it. Pinned by playing a whole 1997–98 season under emulation and photographing the results screen every couple of weeks.
  • The European knockout screens are measured. Five layouts, four of which had never been seen before: plain list, list with shirts, the four-panel quarter-final bracket, a two-card semi-final that names the stadiums, and the final with the trophy.
  • Three up front — an optional cheat, off by default. See below.

Filenames change every build on purpose, so your phone can never serve you a stale cached APK. If the link 404s, a newer build has landed — grab the newest pm98-*.apk from the releases page.

The build what is in it

career, squad, transfers, finances, Europe
InformationResults, league tables, fixtures, goalscorers, statistics, news, the season-end sequence.
ManagerLine-up and the XI editor, team tactics, training, view rival, the pre-match photo roll.
Transfer marketTransfers, the scout, offers and counter-offers, contracts and renewals, staff, the youth academy.
FinancesThe weekly ledger, the board room, loans, insurance, ticket and sponsor pricing, ground improvements.

Every screenshot below is the original 1998 PC game, captured running. They are what the port is measured against, screen by screen and pixel by pixel.

Beating the engine tips, tactics, hacks

every one of these is read out of the 1998 executable
Read this first: your TEAM TACTICS screen does nothing to a scoreline. ATTACKING / SPECULATIVE / MIXED PLAY, PASSING↔LONG BALL, COUNTER ATTACK, TACKLING, MARKING, CLEARANCES, PRESSURISE FROM — none of those settings is in the instant engine's input set. Not one. They cannot change a BRIEF or RESULTS score, and they cannot change any other club's result either. Two decades of people carefully setting their marking before a big game were setting a control that is not wired to anything.

Your goalkeeper is the whole game engine

Every chance is resolved by one comparison: rand()%130 < GKSAVE. A keeper on GKSAVE 99 stops 99 chances in 130 — 76%. A keeper on 60 stops 46%. Across the six chances a match the engine allows, that is the difference between conceding about one and a half goals and conceding about three.

Why: it is the only per-player number that touches the goal decision itself. STR only sets how many chances happen; the keeper decides what happens to each one.

Never pay for a keeper above HANDLING 89 money

GKSAVE is HANDLING +10 in slot 0, clamped to 99. So every keeper from HANDLING 89 upward is literally the same keeper to the engine.

Schmeichel (HANDLING 91) costs £8,500,000 and £1,000,000 a year. Köpke (HANDLING 95, Olympique M.) costs £450,000 and £125,000. Eriksson (HANDLING 90, Oporto) costs £625,000 and £200,000. All three are GKSAVE 99. You can save eight million pounds and half your wage bill on the single most important position in the game, and lose nothing at all.

Why: the +10 pushes anyone at 89 or above past the clamp. Above the clamp the engine cannot tell them apart.

The keeper must be in slot 0, and he must be in the XI engine

The +10 is a slot-0 bonus, not a position bonus. And the save gate is skipped entirely if the defending keeper's SEL is zero — an empty keeper slot means every single chance scores. If your keeper is injured or suspended, put someone in that slot. Anyone. An outfielder on HANDLING 15 still saves 11% of chances; an empty slot saves none.

Why: the engine checks the defending side's participant 0 and returns early on SEL == 0 without rolling the save at all.

Squad strength stops paying almost immediately engine

Chances are rand()%8 + own_avgSTR - opp_avgSTR - 1, then hard-capped at 3 - rand()%3. That cap is 1, 2 or 3 — and it is applied after your strength advantage.

So an eight-point average-STR edge over the opposition already puts you over the cap in most halves. Beyond that, more strength buys you literally nothing. A squad averaging STR 90 and a squad averaging STR 82 generate the same capped three chances against a mid-table side.

Why: the cap is unconditional. The only thing a huge STR edge still does is stop you falling into the negative branch, where you get a smaller rescue draw.

Playing a man out of position costs a quarter of his strength engine

Before STR reaches the engine it passes a position-fit gate. A defender whose slot sits too far forward, a midfielder outside the middle band, an attacker not far enough up — each takes STR × 3/4. A keeper in an outfield slot, or an outfielder in the keeper slot, takes STR ÷ 2.

Since chances are driven by the average STR of the eleven, three men out of position drags your whole team's chance count down.

Why: the gate compares each man's role byte against his own formation slot's pitch coordinates. It is not fatigue and not form — it is geometry, and it is entirely under your control on the LINE-UP screen.

If you want a particular man on the scoresheet, move him, do not train him engine

The scorer roulette weights the fine positions: [0, 0, 3, 3, 3, 7, 7, 12, 10, 35, 10, 12, 15, 18, 15, 3, 18, 18, 10]. Centre-forward (index 9) carries 35. A full-back carries 3. Keepers carry zero and are skipped.

Nothing about shooting, finishing or form enters. If you want your man to win the golden boot, put him at index 9 — he becomes roughly twelve times likelier to be credited than a defender, purely by standing there.

Why: the roulette is over position weights only. A player is also skipped if he already carries two build-up markers or a pending shot, which is why your 35-weight striker occasionally goes missing.

Extra time is the only place a strong squad is properly rewarded engine

The extra-time chance loop is a different formula and it has no cap: (own_avg - opp_avg)/6 - 1 + rand()%3, and then the loop keeps going while rand()%4 == 0. A big strength edge that was being thrown away by the cap for ninety minutes finally converts.

The read: in cup competition, a genuinely superior squad is more likely to win the longer the tie runs. In the league, where there is no extra time, it is not.

Why: the 3 - rand()%3 clamp exists only in the two normal halves. The extra-time tail loop was written without it.

Do not build a squad for penalties engine

The shootout is s0 = rand()%6; s1 = rand()%6; and then both are nudged until they differ. Not one player attribute is consulted. Not the keeper's, not the takers'. The engine then picks names at random to hang the converted penalties on, purely for the read-out.

Why: the shootout records an outcome, not a contest. Penalty events are also excluded from the scoreline entirely.

Three up front — the cheat, and exactly what it does cheat

Field three or more selected players with an attacker role and switch THREE UP FRONT on in OPTIONS. Two things happen for that side: the chance count is floored at 3 per half, and the opposing keeper's save gate is skipped entirely. Net effect: six goals a match, unless the ordinary rolls give you more.

Measured against the real 1998 program, patched and run in an emulator on the same four seeds: stock gives 3–2, 3–3, 2–1, 4–2. Hacked gives 6–2, 6–2, 6–0, 6–3.

Three honest caveats. It is off by default, and with it off the engine is bit-for-bit what it always was. It touches instantly-played matches only — a watched match is unaffected. And the computer gets it too: the trigger is evaluated per side, so an AI team that happens to field three forwards gets the same buff against you. Extra-time loops are not patched.

Why it exists: it came out of finding that no tactic on the TEAM TACTICS screen can move a scoreline, and that a match is capped at three chances a side. The cap was patched out of the real program first, and then the patch was ported.

Morale and fitness do not change results — but they do change your job indirect

Neither is in the engine's six fields. What they do drive is the displayed RATING = (VE + RE + AG + CA + FITNESS + MORALE) / 6, which drives the computer's own team selection, and which is what the board looks at when it looks at you.

The post-match deltas are worth knowing: played +3 fitness / +3 morale, bench −1 / −2, out of the sixteen −2 / −4. And your best players suffer more for being left out — anyone with quality 81 or above takes an extra point of morale damage on every one of those rows.

The result delta lands on every player at once: a home win over a same-sized club is +8, a home draw is −2, a home defeat is −10. Away: win +10, draw +5, defeat −4. A small club winning away at a giant takes +20; the giant losing that game at home takes −24.

Why it matters anyway: at season start morale is 90 + a random 0–9 and fitness is knocked halfway toward 40 — a fresh squad starts on 70 fitness, which is exactly what the real game shows in week one.

One superstar wage costs that player eight morale money

Displayed morale carries a club term. Compare a player's wage against the squad average: up to 4× the average → +8 morale. Up to 8× → +4. Above 8× → nothing. There is also a gate-receipts term worth up to +8, which only switches on when your latest home gate cleared roughly a million.

Why: it is computed at render time from the club's wage bill and squad count, so it moves the moment you sign someone on a silly contract.

Know your sack dates — there are only four of them career

The board does not review you continuously. It reviews you on a fixed schedule, and it only fires if you were below expectation at the previous checkpoint and have not recovered by this one:

  • Week 10 warning, week 14 sack — big clubs only (expectation bands 0 and 1).
  • Week 18 warning, week 22 sack — everyone.
  • Week 26 sack — everyone, if you were below at 18 and still are.
  • Week 30 warning, week 34 sack — the very biggest clubs only.

"Below expectation" is league position against your club's own band. In the Premier League: band 1 must stay above 8th, band 2 above 15th, band 3 above 17th. The elite band 0 is judged on points instead — you are in trouble when the leader is 7 or more points clear of you. In the lower divisions it is 6th / 13th / 15th depending on your band.

The practical read: one good month timed before week 14, 22, 26 or 34 saves your job outright. A terrible run between checkpoints costs you nothing at all, as long as you have climbed back by the gate.

Two sacks that have nothing to do with results watch out

Four consecutive weeks with a negative bank balance and you are gone, regardless of where you sit in the table. And if your squad falls to fifteen players or fewer you are gone as well — that check is always armed, in both career modes, and no flag in the retail build waives it.

Why: the financial sack is a counter that increments on a negative balance and fires at 4. The squad-minimum sack reads the squad count directly.

The money securing your club

the transfer table, the insurance loophole, the ground, Europe

Every price in the game comes out of one lookup table

There is no valuation curve and no stored price on a player. Fee and wage are read from two 702-entry tables inside the executable:

AV          = (VE + RE + AG + CA) >> 2
abilityTier = AV≥95:0  ≥90:1  ≥85:2  ≥80:3  ≥75:4  ≥70:5  ≥65:6  ≥60:7  else:8
ageTier     = age<20:0  <23:1  <26:2  <30:3  <33:4  else:5
idx         = stature*54 + abilityTier*6 + ageTier

fee  = feeTable [idx] * 5000
wage = wageTable[idx] * 5000     per year

stature is the selling club's standing, 0 (elite) to 12 (bottom). Age is a plain calendar subtraction — season-start year minus birth year, no birthday adjustment — which is exactly the age the player's card prints. Checked against the real TRANSFER MARKET screen: every witnessed row exact.

The same player is twenty times cheaper at a small club money

Take a 24-year-old on AV 80–84. At a stature-0 club he costs £8,500,000. At stature 3 — a weaker Premier League side — £2,000,000. At stature 7, a Division Two club, £375,000. Same player, same attributes, same age.

So: shop downwards, and shop abroad. Shevchenko at Dinamo Kiev is £850,000. Kluivert at Milan, comparable numbers, is £12,500,000.

Why: stature is the leading term of the index, and it dominates everything else in the table.

AV 80 is a price cliff. Buy AV 79. money

The ability tiers are steps, not a slope, and the step from tier 4 to tier 3 — that is, from AV 79 to AV 80 — is the biggest in the table. At a top club, a young player at AV 79 costs £3,250,000. The same age at AV 80 costs £10,000,000. Three times the money for one point of average.

The other cliffs, if you need them: AV 84→85 is £10M→£14M, and AV 89→90 is £14M→£15M. Those are mild. 79→80 is the one that matters.

Why: one point of AV is worth almost nothing to the match engine — chances are capped anyway — and three times the fee to your bank. This is the single best value trade in the game.

Older is cheaper to buy and cheaper to pay money

Fee falls with every age tier: at a top club, tier 3 ability runs £10M → £9.5M → £8.5M → £7.5M → £6.5M → £5M across the six age bands.

Wage does not fall the same way — it peaks in the 26–29 band (£650,000) and drops after 30 (£550,000) and after 33 (£475,000). So the 30–32 bracket is a genuine sweet spot: cheaper to buy than a 27-year-old and cheaper to keep.

Why: the engine has no ageing decline in the fields it reads. A 34-year-old with AV 85 plays exactly like a 24-year-old with AV 85.

Improving your squad makes everything you buy next more expensive trap

Your own stature band is computed from your squad's average AV. In the Premier League: average AV 80 or more → band 0; 76–79 → band 1; 72–75 → band 2; 71 or below → band 3. Division One: 64+/60-63/≤59 → 4/5/6. Division Two: 54+/52-53/≤51 → 7/8/9. Division Three: 50+/48-49/≤47 → 10/11/12.

Your band sets what your players are worth, what wages they expect at renewal, and what your ground improvements cost. Crossing a threshold steps all of that up at once. A club at average AV 79 that buys its way to 80 has just made itself considerably more expensive to run.

Why: band is the leading term of both money tables and of the ground-cost function. It is a squad-strength readout, not a reputation you earn.

Insurance Group 3 is the best line in the game — and it is not close money

The premium is monthly wage / 70 for Group 3, floored to a minimum of £1,000 — and the ledger charges it as premium × 12 ÷ 52 every week. So for anyone earning under £840,000 a year — nearly your whole squad — the policy is a flat £230.77 a week, £12,000 a year, whatever he earns. Above that it becomes one seventieth of his wage. (Group 1 floors at £200, Group 2 at £500, on the same ×12÷52 footing.)

When an insured Group 3 player is injured, three things happen in the ledger, all in your favour:

  • His hospital bill is covered 100%.
  • His wage is refunded — netted straight out of PLAYERS' WAGE.
  • His wage plus £333 a week is also booked as income on the INSURANCE GROUP 3 line.

An injured, insured, well-paid player is cash-positive. That is the 1998 game's own model, reproduced exactly, not an interpretation of it.

Work one through. A man on £175,000 a year picks up a three-week injury. Uninsured he costs you £8,250 in hospital bills and you pay his £10,100 of wages anyway. On Group 3 the bills vanish, the £10,100 comes back, another £10,100 lands as income, and £1,000 of bonus on top — roughly a £29,000 swing against a £12,000 annual premium. One injury pays for the policy twice over.

For contrast: Group 1 reimburses nothing at all — zero percent, by the binary, not by a missing case. Group 2 pays 50%. Insuring anyone in Group 1 is money thrown away.

Do this: put every player you would actually miss on Group 3, and nobody on Group 1. Do not blanket-insure the whole squad — at £12,000 a head a twenty-man sweep is £240,000 a year, which only pays back if they keep getting hurt.

Uninsured injuries cost far more than the PRICE column says money

An injury's price is £1,500 per week of its total rolled duration. But the weekly bill divides that total by the weeks remaining, not the total — so the bill climbs as the man heals.

A three-week injury reads £4,500 on the INJURIES screen. You actually pay £1,500, then £2,250, then £4,500 — £8,250, nearly double the displayed price.

Why: the original divides by remaining weeks. It is reproduced verbatim, because it is what the real game charges.

Build your ground while you are still small money

Improvement cost is weeks × 5000 × P, where P falls as your stature band rises — that is, as your club gets weaker. New seating runs P 42.5 at a stature-0 giant down to P 10 at the bottom. Car parking runs 85 down to 20.

That is why the biggest seating card costs Manchester United £10,624,999 and a Division Two club a fraction of it. (Yes, that price is a pound short of round. The 1998 program's own arithmetic is a pound out there, and the port keeps the missing pound, because the real game charges it.)

Cheap wins: TOILETS is a flat P 10 over one week — £50,000 at any club in the game. CHANGING ROOMS is three weeks at P 3–15. FLOODLIGHTS four weeks at P 5–25.

Why: the cost function reads the same stature band as the transfer table. Promotion makes your ground more expensive to extend, so extend it first.

Europe is the only income you can plan against a number money

There is no static domestic prize table anywhere in the executable — domestic income is a dynamic weekly float ledger, 524 bytes a week, 52 weeks a season. The one fixed, code-resident prize schedule is UEFA's:

EventPayment
Entry — competing in the championship£1,000,000
Every drawn match£255,000
Every match won£510,000
Qualifying for the quarter-finals£1,500,000
Qualifying for the semi-finals£1,625,000

A six-win group stage is £4,060,000 with the entry fee. Reaching the semi-finals adds another £3,125,000 on top of the win money. A win is worth exactly twice a draw, so in Europe there is never a reason to play for one.

Why: these amounts are embedded in the message text itself — the string the game shows you is the constant.

Only home weeks pay money

A matchday's income is TICKETS + TELEVISION + PLAYERS' BONUS, and only at home. A witnessed away week reads income £0 against expenses of £233,942. Ticket price starts at £7.50.

Why it matters: the financial sack fires on four consecutive weeks in the red. A run of away fixtures is exactly when that counter climbs, so time a big outgoing — a signing, a ground project — to land on a home week.

Most of your backroom staff do nothing honest

Thirteen roles are hireable, from £1,000 to £52,000 a year. In this port, the six skill trainers, the psychologist, the assistant manager and the groundsman have no engine effect — there is no decoded source data behind them, so rather than invent one they are no-ops, and that is stated rather than hidden.

The ones that genuinely do something are the scout, the youth team scout (who gates the academy entirely — no youth scout, no youth players) and the physiotherapist.

Do this: hire a scout, a youth scout and a physio. Leave the other ten unfilled and keep the wages.

A better scout finds you more names, not better ones engine

The scout's shortlist cap is (quality + 2) × 5, where quality is counted in half-stars. A three-star scout is quality 6 and brings back 40 names; a five-star scout brings back 60; a one-star scout, 20.

And the trim is uniformly at random — not "the best N". If 112 players match your criteria, a three-star scout throws 72 of them away at random, and re-running the same search gives you a different list.

So: a £45,000-a-year five-star scout buys you 50% more names off the same search, and nothing else. Whether that is worth £41,000 more than a one-star scout is a real decision, not an obvious one. And re-run the same search — the player you want may simply have been binned by the lottery last time.

Also: searching by ROLE checks all six of a player's positions, not just his first. The E.U. / NON-E.U. boxes only reach foreign clubs; the four division boxes are what reach English ones.

The youth academy gives you one player at a time engine

The youth scout scans the pool, filters it, and then returns at most one player, chosen uniformly at random from the matches. Not the best match — a random one. Youth players sit in the game's youth pseudo-club, which is the lowest stature band there is, which is why their listed fees look absurdly low.

They are not buyable at that price. They arrive only through the scout, and they leave the pool only by being promoted — the same scout can never find the same boy twice.

Do this: hire the youth scout in week one. It is the only route into the academy and the searches are the only intake there is.

The squad book top 20 by position and role

9,547 rated players · ranked on what the engine reads · priced from the game's own table

How these are ranked

STR
(VE + RE + AG + CA) >> 2 — the four general bytes, averaged.
PASS
PA, straight through.
GKSAVE
PO + 10 in the keeper slot, clamped to 99.

Outfielders rank on (STR + PASS) / 2. Keepers rank on GKSAVE, which is why so many of them tie on 99 — from HANDLING 89 upward they are the same keeper to the engine. TACKLING, DRIBBLING, HEADING and SHOOTING are not read at all, so they are not ranked on.

How these are priced

FEE
feeTable[idx] × 5,000 — the asking price, and what the seller accepts.
WAGE
wageTable[idx] × 5,000, per year.
idx
stature × 54 + abilityTier(STR) × 6 + ageTier(age).

Both tables are lifted byte-exact out of the original executable. Stature is the selling club's standing 0–12, set from its division and its squad's average strength — which is why the same player is worth ten times more at Liverpool than at Blackpool. Checked against the real TRANSFER MARKET screen: 17 of 17 rows exact.

Loading the database…

Fine roles are the game's own position index — the ROL column, drawn as a pitch glyph — named from the SCOUT screen's own ROLE dropdown. Roles with fewer than 50 players are omitted. The youth pool is included and marked youth; those players are not buyable. They arrive only through the youth scout, and their listed fee is what the table says the youth band is worth, not an asking price you can pay.

Where all of this comes from

and what is still unknown

The method

Three sources, in order of authority:

  1. The 1998 executable. Disassembled and decompiled. Every formula on this page — the chance count, the keeper gate, the fee and wage tables, the insurance premiums, the injury bill, the ground costs, the sack schedule, the morale deltas — is read out of it, and most are re-run against the real bytes in an emulator to prove the port matches.
  2. Photographs of the real game running. Hundreds of them, including a full 1997–98 season played from August to the season-end sequence, captured to settle questions the code alone could not answer.
  3. The art and data archives off the disc, decoded to their original palettes.

What is still open, stated plainly

  • The positional engine is verified tick-for-tick against the original for the first 1,032 ticks — a little over three minutes of a 14,400-tick half. It is exact everywhere it has been checked and unchecked after that. The match you actually play is still the simpler engine until the exact one clears a full ninety.
  • HIGHLIGHTS cannot be built: the 3D model files are not on the disc or the CD image. That is the only part genuinely out of reach.
  • The MIXED PLAY variant of the three-forwards cheat is not built — the club tactic byte has not been located yet.
  • Several finance rows, backroom-staff effects and a handful of screen fonts are honest gaps. They are rendered blank rather than filled with plausible numbers.