Submission Text Full Submission Page
Safari Hunt is a light gun shooter game on Sega Master System first released in 1986 integrated in the BIOS (version 2.4) alongside with Hang On for the first North America launch where the light phaser (light gun) was included in the package. Later on it was available in the compilation games Hang On & Safari Hunt and Marksman Shooting / Trap Shooting / Safari Hunt.

Game objectives

  • Emulator used: BizHawk 2.5.2
  • Finish the first 3 rounds as fast as possible (first loop)
  • Heavy luck manipulation

Comments

Safari Hunt is a shooting game with 3 repeating levels (lake, forest & jungle). Each level has 3 or 4 different types of target to shoot, the goal is to get enough points to be qualified for the next round, with 30 ammos or a time limit (2560 frames = ~43s). Round will be then over when all the 30 bullets are shot or time is out (the timer is not visible), and all targets have left the screen.
This has an end screen after 69 rounds, the final screen has a funny message:
YOU ARE A WONDERFUL HUNT
LET'S GO TO THE REAL HUN
WITH A REAL GUN
I might do a TAS for all the 69 rounds in another submission, so this TAS should be a Vault tier as I want to show the results of my research and it can be a starting point for an any% all rounds run.
Lake Forest Jungle

Spawn routine

The game has 6 slots to spawn 6 targets at the same time on the screen. Each target type would be attributed to 1 or 2 specific slots (e.g. Duck slot 2 & 3). Only the first 5 slots are used for shootable targets, the 6th slot is used for some extra animation (e.g. splash animation for the fish). %% Addresses for the 6 slots in memory
Slot Index 0 1 2 3 4 5
Addr 0x0530 0x0560 0x0590 0x05C0 0x05F0 0x0620
Each slot contains all the information of the target spawn, depending on the type of target, some values have a different purpose.
Here are some useful address offsets common for each slots:
Offset Name Info
+0 Type the number use to identify a target (e.g. 25 = duck)
+7 Y Y position from 0 to 192
+9 X X position from 0 to 256
+12 Height 16 pixels except for the bear & monkey (24) and the bat (8)
+14 Width 16 pixels except for the bear & panther (24)
+15 dY signed value to add to the Y position each frame
+17 dX signed value to add to the X position each frame
+32 direct type a number to set the direction (dY & dX) from a subroutine in the code
+33 direction time the next time the direction will be changed
The game will follow a spawn order from a table in memory for each level. This spawn table has a size of 20 bytes, for an index from 0 to 9, index+0 is the target type and index+1 is the next spawn time.
This how the current spawn is tracked in memory:
  • 0x0217 - current spawn index
  • 0x0218 - next spawn time
  • 0x0219 - spawn table ROM address (e.g. 0x1BDA for lake level)
At the beginning of each round, the first index would not spawn and the next spawn timer will be set to 16. For instance the first round starts with the index 0 but the very first spawn is for the index 1 after 16 frames.
Each frame, the next spawn time is decreased, when this value reach zero:
  • Current spawn index is increased by 1 (modulo 10)
  • Check the slot(s) associate with the target:
    • A slot is available, then set the target type in the slot and set the next spawn time
    • all slots are occupied, then spawn is skipped and the next target spawn time is set to 1
  • once the slot is setup, the spawn info (size, animation, …) is set with a random location for some target:
    • Location is not set and the spawn is canceled, the current spawn time stays the same.
    • location is set from a subroutine.

Luck Manipulation

Because of the simplicity of the light phaser, the shot action and the shot location can be use manipulate the luck. When the player presses the trigger, the game freezes during 1 frame in order to compute where the gunshot and the RNG (address: 0x01ED) is not updated during that frame. Depending on the location, the RNG may be different
Target spawn location
  • Make sure the spawn location is set inside the screen (avoid spawn cancelation)
  • Choose a location where the target can exit the screen quickly after getting shot when it requires, usually at the end of the round or to avoid a spawn skipping
Target spawn direction:
Manipulating the direction for some target (e.g. Ducks), we can keep them on the screen long enough to do some spawn skipping and make other targets with more points to spawn quicker.

Stage by stage comments

Round 1 - Forest

Name
RABBIT

DUCK

FISH
Type 24 25 26
Points 1000 300 1000
Slot index 0 2 & 3 1
Spawn Table (0x1BC6)
Index 0 1 2 3 4 5 6 7 8 9
Target DUCK DUCK FISH DUCK RABBIT DUCK RABBIT DUCK FISH DUCK
Time 64 88 64 96 64 88 64 88 64 64
We need to reach 10 000 as fast as possible, for that we want the fish and rabbits to spawn quicker since they give 1000 points and for that we want 2 ducks to always fly around so every other duck spawn would be skipped. Rabbit is the fastest target to exit the screen when spawn on the right and it allows to have 2 rabbit spawns in the row. The fish is the slowest to Spawn and despawn, it’s better to skip a fish spawn for a rabbit spawn. With a total of 6 rabbits and 3 fishes, we just need to get 4 ducks in order to have just above the minimum 10 000 points. We need 2 spawns of duck during the first level, it’s better to do right after a fish spawn, duck at index 9 has the smallest next spawn time of 64 frames instead of 88 or 96.
Level Spawn
Index 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
Spawn _-_ DUCK FISH DUCK RABBIT _-_ RABBIT _-_ FISH DUCK _-_ _-_ FISH _-_ RABBIT _-_ RABBIT _-_ FISH DUCK _-_ _-_ _-_ _-_ RABBIT _-_ RABBIT
Timer 16 88 64 96 64 1 64 1 64 64 1 1 64 1 64 1 64 1 64 64 1 1 1 1 64 1 64

Round 2 - Forest

Name
PARROT (bird)

AMARDILLO

BEAR

APPLE
Type 27 28 30 2
Points 200 1000 2000 1000
Slot index 2 & 3 1 0 4
Spawn table (0x1BDA)
Index 0 1 2 3 4 5 6 7 8 9
Target PARROT AMARDILLO PARROT BEAR PARROT AMARDILLO PARROT BEAR PARROT AMARDILLO
Time 64 64 88 88 64 64 88 64 64 16
This level has the fastest spawn cycle: SUM = 664 frames. On top of that, there are apples that spawn independently from the target spawn routine. The main focus is to get as many apples as possible.
The strategy here is to get a lot of points so for the next round which has the slowest spawn (SUM = 768 frames), we can the remaining points while shooting all the 30 bullets as fast as possible. In this case we need 25200 points and it can be done with 8 apples, 2 bears, 2 armadillos and 5 parrots.
Unless level 1, here we want to avoid having spawn skipping because the bears are slowest to exit the screen and we only want 2 of them before the end of the round, so we need to have all the spawn in order to avoid the 3rd bear spawn. It’s also faster to have the first spawn at the beginning of the round.
Level Spawn
Index 6 7 8 9 0 1 2 3 4 5 6
Target _-_ BEAR PARROT AMARDILLO PARROT _-_ PARROT BEAR PARROT AMARDILLO PARROT
Time 16 64 64 16 16 1 88 88 64 64 88

Round 3 - Jungle

Name
SPIDER

BAT

MONKEY

PANTHER
Type 29 31 33 34
Points 100 500 300 2000
Slot index 0 1 2 3
Spawn table
Index 0 1 2 3 4 5 6 7 8 9
Target BAT SPIDER MONKEY SPIDER BAT SPIDER MONKEY PANTHER BAT MONKEY
Time 96 64 96 80 64 64 64 96 80 64
For this level we are shooting all the 30 bullets as fast as possible! The spider, the monkey and the bat are shot at the last moment to skip 5 targets and get a 2nd panther at the end. For the last panther, the spawn location has been manipulated to have a fast despawn on the right.
Index 6 7 8 9 0 1 2 3 4 5 6 7
Target _-_ PANTHER BAT MONKEY _-_ SPIDER _-_ _-_ _-_ _-_ _-_ PANTHER
Time 16 96 80 64 1 64 1 1 1 1 1 96

Other comments

Tools used

  • Emulicius: Decompile to assembly & debugger, great tools and wrote in java (works anywhere)
  • Lua Scripts: draw target hit boxes and generate some logs

For next

  • look more in detail for the RNG to see how the shot location impact the value
  • look at how target hit box behind an obstacle work (tree, bush, ...)

GoddessMaria: Jugding...


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15628
Location: 127.0.0.1
This topic is for the purpose of discussing #7089: arnaud33200's SMS Safari Hunt in 01:11.21
Spikestuff
They/Them
Editor, Publisher, Expert player (2656)
Joined: 10/12/2011
Posts: 6449
Location: The land down under.
So this essentially clears a loop of the game. Question, do the patterns of the animals become more aggressive at all?
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Player (16)
Joined: 11/24/2012
Posts: 45
Location: Toronto (Canada)
Spikestuff wrote:
So this essentially clears a loop of the game. Question, do the patterns of the animals become more aggressive at all?
yes, this run just clears the first loop. After round 3, the patterns doesn't change, just the the next spawn time is shorter and the target movement is faster (e.g. dX is 3 instead of 1).
Player (22)
Joined: 12/29/2020
Posts: 10
Despite the seeming simplicity of the game, this fast-paced run still displays a lot of varied strategies and definitely kept my attention throughout. It's a bit unfortunate that the run is so short and that the ending feels a bit abrupt (though I think that completing all 69 levels would get a bit repetitive). Yes vote.
Emulator Coder, Judge, Experienced player (732)
Joined: 2/26/2020
Posts: 791
Location: California
Watching the movie, it seems to be rather quick and not exactly the most entertaining. Still, it is entertaining for what it is. However, it's still fairly meh, and stopping after round 3 does not help that in my opinion. Now for a layman's opinion on what this run's fate should be, which ends up falling under a certain rule: Is the movie complete? The rules state that a movie must reach an ending screen that positively signifies a game is finished successfully if applicable. This is applicable for this game, having an ending screen after round 69 (nice), which goes back to the title screen afterwards, indicating that the game has clearly ended. This movie only goes as far as round 3, and ends after that round. The rules do state that completing all unique content (ie a single loop) in a game without a clear ending can count as a completion. However, as seen before, this game does have a clear ending, so these rules do not apply. A publishable TAS needs to complete all 69 (nice) rounds, not just the first 3. tl;dr The game has a clearly definable ending, and this movie does not each that ending, thus is incomplete and not publishable.
Player (16)
Joined: 11/24/2012
Posts: 45
Location: Toronto (Canada)
CasualPokePlayer wrote:
tl;dr The game has a clearly definable ending, and this movie does not each that ending, thus is incomplete and not publishable.
Since I've submitted I've learned about the minimal requirement for the vault tier. So I understand and it's fine that it cannot be published. unless there is a way to archive it somewhere, let's just cancel/reject this submission
Emulator Coder, Judge, Experienced player (732)
Joined: 2/26/2020
Posts: 791
Location: California
arnaud33200 wrote:
unless there is a way to archive it somewhere, let's just cancel/reject this submission
You can archive whatever TAS you want in the userfiles, and of course all rejected/canned TASes end up in Gruefood, and you can upload any encode on your own YouTube channel. If you are absolutely sure you want to cancel this submission, you can do so in the edit movie thing:
Player (16)
Joined: 11/24/2012
Posts: 45
Location: Toronto (Canada)
CasualPokePlayer wrote:
If you are absolutely sure you want to cancel this submission, you can do so in the edit movie thing:
Maybe I would like to have a confirmation from GoddessMaria (judge) before doing that
Site Admin, Skilled player (1255)
Joined: 4/17/2010
Posts: 11495
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
I can say that CasualPokePlayer's assessment looks correct regarding not reaching the game end, which it has.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Samsara
She/They
Senior Judge, Site Admin, Expert player (2241)
Joined: 11/13/2006
Posts: 2822
Location: Northern California
arnaud33200 wrote:
Maybe I would like to have a confirmation from GoddessMaria (judge) before doing that
Go ahead and do it, you don't really need the judge's confirmation.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family. Now infrequently posting on Bluesky
warmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.
TASVideosGrue
They/Them
Joined: 10/1/2008
Posts: 2792
Location: The dark corners of the TASVideos server
om, nom, nom... blech, bitter!