Browse Source

rpg start

pixelbath 1 month ago
parent
commit
d03d128163
6 changed files with 526 additions and 0 deletions
  1. 126 0
      rpg/README.md
  2. 4 0
      rpg/rpg-tiles.tsx
  3. BIN
      rpg/rpg.aseprite
  4. 352 0
      rpg/rpg.lua
  5. 12 0
      rpg/tic-rpg.tiled-project
  6. 32 0
      rpg/tic-rpg.tiled-session

+ 126 - 0
rpg/README.md

@@ -0,0 +1,126 @@
+# RPG
+All `backticked-items` are considered variables that should be interpreted and replaced in the following outline. A list of item types are provided:
+- `nature-orb`: The nature orb, known as the Bloom of Eternal Spring.
+- `nature-orb-level`: Greenhollow Forest contains a dungeon which contains `nature-orb`, and is guarded by `nature-orb-boss`.
+- `nature-orb-boss`: A dryad that is weak to fire magic and slash attacks.
+- `earth-orb`: The earth orb, known as Adamantine Core.
+- `earth-orb-level`: The caverns below Stonepeak.
+- `earth-orb-boss`: The leader of the (goblins? other humanoids?)
+- `water-orb`: The water orb, known as The Abyssal Pearl.
+- `water-orb-level`: Off the coast near Tidehaven is an underwater dungeon only accessible by using `earth-orb`.
+- `water-orb-boss`: A siren/mermaid thing inhabiting the ocean palace, weak to fire magic.
+- `fire-orb`: The fire orb, known as the Ember of Creation.
+- `fire-orb-level`: A maze of twisty passages, all very hot, down below the Volcano.
+- `fire-orb-boss`: A magma golem guarding the `fire-orb` since ancient times, weak to water/ice attacks.
+
+## Actual Story
+
+### Riverhaven
+EXT. RIVERHAVEN DAY
+
+The camera pans across a castle town and comes to rest over the weapons and armor shop. Cut to the interior shot of the building, which blacks out the outside.
+
+INT. BLACKSMITH SHOP
+
+Eirik is working in front of a forge, swinging his hammer. The blacksmith is standing at the counter. An NPC walks up to the counter, and after a few seconds, leaves. The blacksmith walks over to Eirik.
+
+BLACKSMITH: You're being summoned to the Royal Court. The guards are waiting for you out back. I can finish up here.
+
+The player can walk around, but there's not much to do. Talking to the blacksmith produces "Go on, now." When the player leaves, fade to the throne room.
+
+INT. THRONE ROOM
+
+ARCHMAGE: Ah, young lad. Thank you for coming. I am the Royal Archmage and His Highness has a task most important.
+
+ARCHMAGE: Just to confirm, what was your name again?
+
+The player can enter their name at this time. Eirik is the default choice and written into the script.
+
+ARCHMAGE: Ah, Eirik, yes... You are an orphan, are you not?
+
+ARCHMAGE (if no): Ha, dear child. The smith is not your parent.
+ARCHMAGE (if yes): Yes, the smith raised you as his own.
+
+ARCHMAGE: Surprised that I know this? It was I who placed you in his care. I knew your mother shortly before she perished. It was my promise to her that you be kept safe.
+
+ARCHMAGE: I have done so, and now I must ask a task of you. There is an artifact the kingdom needs you to retrieve. Will you do this for us?
+
+KING (if no): We are not asking. It is a royal command. 
+
+KING (if yes): Excellent news! It pleases us to hear this.
+
+ARCHMAGE: Through my research, I have discovered an item of great power near the city of Greenhollow. You shall set off at once. I will grant you a small amount of money to prepare for your journey, with much greater reward after you have completed the task.
+
+ARCHMAGE: Go to Greenhollow and speak with the mayor there. He will be able to guide you to your ultimate destination. Good luck.
+
+The player now has free agency. They are given 100g to start.
+
+If they speak to the king, he says "Go forth!"
+
+If they speak to the Archmage, he says "Good luck."
+
+Talking to the blacksmith yields "When your kingdom calls, you answer."
+
+Nobody else in Riverhaven has useful information.
+
+### Greenhollow
+Greenhollow is at the edge of a large forest.
+
+EXT. GREENHOLLOW
+
+MAYOR: Follow the old Northeastern trail. Be warned, the forest is a bit wild and dangerous lately.
+
+The player traverses the woods for a bit until they reach a tree.
+
+## Story
+
+### Chapter: Riverhaven
+- Eirik works as the blacksmith's apprentice in the castle town of Riverhaven.
+
+### Chapter: Archmage's Request
+- Eirik is summoned to the the royal court. While there, the Archmage asks of him to retrive an ancient artifact from the nearby town of Greenhollow. When the player protests their qualifications for such a task (being they're a blacksmith's apprentice), the king interrupts and tells the player that they are the prophesied hero of old.
+
+### Chapter: Nature
+- Player eventually travels to Greenhollow. While there, they hear about some strange goings-on with the local fauna - random attacks at the edges of the forest and so forth. Local rumors lead them into the forest to retrieve the artifact from `nature-orb-level`.
+- Player gets into the forest and finds `nature-orb-level`, which is a dungeon that eventually leads to the caretaker of the artifact `nature-orb-boss`. During the confrontation, `nature-orb-boss` reveals that the artifact they are seeking is part of a greater whole (the other orbs), and such things will not be gotten so easily. The name is also revealed for the artifact `nature-orb`.
+- Player returns to Riverhaven to get more info, and is contacted by the Archmage. He thanks them for their effort, and tells them there are three more orbs to find: the `earth-orb` in Stonepeak, the `water-orb` in Tidehaven, and the `fire-orb` somewhere near the old volcano. The player can visit them in any order, but are prevented from entering the dungeon instances depending on the orb(s) they possess.
+
+### Chapter: Earth
+- Retrieving the `earth-orb` in the Mountain Citadel of Stonepeak:
+    - Stonepeak is an underground dwarven citadel. Upon arrival, the king throws a grand reception for the player given they're the most recent emissary they've had. The orb is confirmed to be held by the dwarven king, and he has no intention of giving it up.
+    - At the reception, the party is attacked by a group of underground enemies. The royal guard is overwhelmed, and the king asks the player for help retrieving his daughter. Being a dwarven woman, she's built like one, so there's a strong implication that the capturers are lovers of the... short and stacked build.
+    - The player goes through the Stonepeak dungeons and fights `earth-orb-boss`. The daughter is rescued, but it's revealed this was an elaborate plot to usurp the throne from her father. The player's intervention threw a wrench in the whole thing, so she gives up. They return to the royal chambers where the king grants the party the `earth-orb` after being filled in on the details of the fake kidnapping.
+
+### Chapter: Water
+- Retrieving `water-orb` from near Tidehaven:
+    - After receiving information about the ancient sealed cavern near Tidehaven, player uses `earth-orb` to open a large door that opens to a tunnel under the ocean. The tunnel leads to an underwater citadel that is the `water-orb-level`.
+    - Entering the citadel, they notice a spell is cast on them that allows them to breathe underwater. Which is good, because the citadel is completely full of water.
+
+### Chapter: Fire
+- Going to `fire-orb` in the heart of an active volcano in the Blasted Lands, called such because it's covered in cooled lava fields surrounding an active volcano; the `water-orb` provides protection from the intense heat. They find a town near the edge of the Blasted Lands, which speaks of the prophecy that will open the Blasted Lands to the town inhabitants.
+    - Party travels though a maze of caverns, fighting fire-based monsters until they encounter `fire-orb-boss`. After defeating `fire-orb-boss`, the lava begins to cool in the volcano.
+    - When the party returns to the town, people have already noticed the prophecy fulfilled, with some planning to set out into the Blasted Lands immediately.
+
+### Chapter: Reveal
+The Archmage tells them of a town nearby that he can travel to. The party will be able to wait for him at the Mayor's house in the meantime. If they talk to townfolk, the townfolk are suspicious and scared, and some mention that the Tower of Shadows is nearby.
+
+When they meet the mayor, he is obsequious and a bit creepy. The player is served dinner, during which it is revealed they are drugged as the party loses all motor control while staying conscious. The Archmage comes into the room and takes the Orbs, where the Mayor calls him "Master Malachar." He calls the player and his party stupid for not having figured him out, and that he most enjoys killing when his victims are fully aware, as is the case now.
+
+Just as Malachar is about to murder the party, a rock flies through the window of the manor. The Mayor looks outside and sees the town is rioting and chanting for him to get out. Malachar teleports away and the Mayor is dragged out by the townfolk. A doctor is called the the player's party recovers at the local inn.
+
+After the party awakens, they are told that the Mayor was evil and embezzling town funds. The player reveals to the townfolk that the Mayor was working for Malachar, which angers but doesn't surprise them. The player is told that The Tower of Shadows is nearby, where Malachar resides.
+
+A scholar tells them that the only reason for Malachar wanting the orbs would be to summon the demon Azaroth to supplement his own power and rule the world.
+
+### Chapter: Tower of Shadows
+The Tower of Shadows mostly consists of random higher-level enemy encounters with occasional bits of Malachar's research and writings scattered throughout. Malachar is at the top, which forces the party to fight their way through all floors.
+
+### Chapter: Confrontation
+The party enters just as Malachar is finishing the summoning ritual. After a bit of monologuing, he engages the party in combat.
+
+As the party defeats Malachar, Azaroth begins laughing and engages the party in combat.
+
+## Behind the Scenes
+- Player is given some gold at the start and told they can request free basic equipment a single time from the castle staff.
+    - Unknown to the player, taking the free help is recorded.
+

+ 4 - 0
rpg/rpg-tiles.tsx

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tileset version="1.10" tiledversion="1.10.1" name="rpg-tiles" tilewidth="8" tileheight="8" tilecount="256" columns="16">
+ <image source="tiles.png" width="128" height="128"/>
+</tileset>

BIN
rpg/rpg.aseprite


+ 352 - 0
rpg/rpg.lua

@@ -0,0 +1,352 @@
+-- title:   Eldora
+-- author:  pixelbath
+-- desc:    Fantasy RPG
+-- site:    https://www.pixelbath.com
+-- license: MIT License (change this to your license of choice)
+-- version: 0.1
+-- script:  lua
+-- saveid: eldora_v1
+
+local p_opt = {
+    ["music_vol"] = 16,
+    ["sfx_vol"] = 16,
+    ["difficulty"] = 1,
+}
+-- write all p_opt values to pmem
+function write_p_opt()
+
+end
+
+function read_p_opt()
+
+end
+
+local dlg = {
+    ["intro_01"] = {
+        { "SMITH", "You're being summoned to the Royal Court." },
+        { "SMITH", "The guards are waiting for you out back. I can finish up here." },
+    },
+    ["intro_blacksmith"] = {{ "SMITH", "Go on, now." }},
+    ["intro_02"] = {
+        { "ARCHMAGE", "Ah, young one. Thank you for coming. I am the Royal Archmage and His Highness has a task most important." },
+        { "ARCHMAGE", "Please, tell me. What was your name again?" },
+    },
+
+
+    -- ["intro_01"] = [{ "CHAR", "" }],
+    -- ["intro_01"] = [
+    --     { "CHAR", "" },
+    -- ],
+    
+}
+local dlg_idx = 1
+
+function display_dialog(key_name)
+    return dlg[key_name][dlg_idx][1] .. ": " .. dlg[key_name][dlg_idx][2]
+end
+
+function set1bpp()
+ poke4(2 * 0x3ffc, 8) -- 0b1000
+end
+
+function set4bpp()
+ poke4(2 * 0x3ffc, 2) -- 0b0010
+end
+
+local pal_map_addr = 0x3ff0 * 2
+
+function draw_dialog_box(chr_idx)
+    local w,h=180,50
+    local x,y=120-(w//2),105-(h//2)
+	rect(x+7,y+7,w-14,h-14,2)
+    for xg=0,w-8,8 do
+		spr(394,xg+x,y)
+		spr(426,xg+x,y+h-8)
+	end
+	for yg=0,h-8,8 do
+		spr(409,x,yg+y)
+		spr(411,x+w-8,yg+y)
+	end
+	-- corners last
+	spr(393,x,y)
+	spr(395,x+w-8,y)
+	spr(425,x,y+h-8)
+	spr(427,x+w-8,y+h-8)
+end
+
+function draw_dialog_text(lines)
+    local offset = 0
+    for i=1,#lines do
+        wrt(lines[i], 40, 86+(offset*10), 15)
+        offset = offset + 1
+    end
+end
+
+-- basically print() but for font() setup at 1bpp
+function wrt(text, x, y, color)
+    set1bpp()
+    poke4(pal_map_addr + 1, color)
+    font(text, x, y, 0, 8, 8)
+    poke4(pal_map_addr + 1, 1)
+    set4bpp()
+end
+
+testlines = {
+    "BLACKSMITH",
+    "What the actual &#@! is ",
+    "going on here?! You think you",
+    "can just write lines as long"
+}
+
+function TIC()
+    cls(0)
+
+    -- wrt(" !\"#$%&'()*+,-./0123456789:;<=>?", 10, 10, 8)
+    -- wrt("@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_", 10, 20, 9)
+    -- wrt("`abcdefghijklmnopqrstuvwxyz{|}~", 10, 30, 10)
+    -- wrt("We will learn to make this look less childish over time.", 10, 40, 15)
+
+    draw_dialog_box()
+    draw_dialog_text(testlines)
+
+    -- read_p_opt()
+end
+
+-- <TILES>
+-- 000:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 001:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 002:bbbbbbbbbbbbbbbbbbbbbbbbbbbb5bbbbbbb5bbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 003:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 004:bbbbbbbbbbbbbbb4bb9ccbbbb4999cbbbbbbbbbbbbbbbbccbbbbcc99bbb99999
+-- 005:bbbbbbbbbbbbbbbbbbbbbbbbbbb4bbbbbbbbbbbbcbbbbbbb9ccbbbbb999cbbbb
+-- 006:bbbbbbbbbbbbbbbbbbbb5bbbbbb555bbbbb0b5bbbb03b5bbbb3055bbbb03555b
+-- 007:bbbbbbbbbbbbbbbbbbbb5bbbbbbb55bbbbb5b5bbbbb055bbbb0355bbbb05555b
+-- 008:bbbbbbbbbbbbbbffbbbbbbffbbbbbfffbbbbbfafbbbbfffdbbbbfaaabbbdaaaa
+-- 009:bbbbbbbbfbbbbbbbffbbbbbbffbbbbbbfffbbbbbff7bbbbbdfd7bbbb3aad7bbb
+-- 010:888888888888888888888888888888888888f88888dd8f888888888888888888
+-- 011:88888888888888888888dd888888888888888888888888888888888888888888
+-- 012:bbbbbbbbbbbbbbbbbbbbbb5bbbbbbbbbbbbbbbbbbbb00bbbbb07700bbb077770
+-- 013:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0bbb0bb070b070b070b070077707770777
+-- 014:bbbbbbbbbbbbbbbbbbbbbbbbbbb0bbbbbb070bbbbb070bbb007770bb0777a0bb
+-- 015:bbbbbbbbbbbbbbbbbbbbbbbbbbbbb5bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 016:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 017:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 018:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 019:bbbbbbbbbbb5bbbbbbbb5bbbbbbb5bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 020:bb999c99599cc49999cc9b494ccbbbb4bbbbbbbbbbbbbbbbbb4bbbbbbbbbbbbb
+-- 021:c999ccbb9c9999cb9cb4499c9bbbb449bbbbbbbbbbbbbbbbbbbbbb4bbbbbbbbb
+-- 022:b0355b5bbb055353b0335055bbb14bbbbbb01bbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 023:b035355bbb055553b0335055bbb14bbbbbb01bbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 024:bbbdaa7abbdaaa3abbdaa33abdaa737abd33337a37555733bbbbbbbbbbbbbbbb
+-- 025:37aa7bbb33aaa7bbd37daa7bad3dda7baad3daa775555377bbbbbbbbbbbbbbbb
+-- 026:8888888888888888888888888888888888888888888df8888888888888888888
+-- 027:88f888888d8f8888888888888888888888888888888888888888888888888888
+-- 028:b0777770b0077770b0a0070ab0aaa00ab00aaaa7bbb00aa0bbbbb00bbbbbbbbb
+-- 029:707077777000a777a700aaa0a0b0aaaaa0b0aa0a0000000007a7a7a707a7a7a7
+-- 030:700aa0bba0aaa0bba0a00b00a00bbb0aa0bbbbb000000070a7a7a70aa7a7a70a
+-- 031:bbbbbbbb00000bbbaaaaa00b0a0a0a0baaaaa0bb0700000ba0a7a70ba0a7a70b
+-- 032:3000000030aaaaaa0aaaaaaa0aaaaaaa0aaaaaaa0aaaaaaa0aaaaaaa037a7a7a
+-- 033:00000033aaaaff03aaaaaaf7aaaaaaa7aaaaaaa7aaaaaaa7aaaaaaa07a7a7a70
+-- 034:ccccccccccccccccccc9cccccccccccccccccccccccccccccccccccccccccccc
+-- 035:ccccccccccccccccccccc9ccccccccccccccccccc9cccccccccccccccccccccc
+-- 036:6777666666463366643666367333316666666336666663667663166767366776
+-- 037:6776366666676366677666367666666763366366666336767666666367366666
+-- 038:6777666660000000099999990900000009044444090444440904444409044444
+-- 039:6776366600000006999999900000009044444090444440904444409044444090
+-- 040:67776666666000060000aa000cc0dd0c0990dd090940aa040940aa040440aa04
+-- 041:677636666000066600aa0000c0dd0cc090da099040aa049040aa049040aa0440
+-- 042:bbbbbbbbbbbbbb33bbbb3355bbb35555bb353553bb035055bb033505bbb00335
+-- 043:bbbbbbbb33bbbbbb5551bbbb5bbb1bbb53bbb5bb355135bb511355bb555bb5bb
+-- 044:bb444444b4ffffffb4f0f00fb4f0f0f0b4f0f0f0b4f0f0f0b1ffffffbb111444
+-- 045:44999bbbffffa9bbf00ff4bbf0f0f4bbf0f0f4bbf0f0f4bbfffff4bb44444bbb
+-- 046:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbababbbbb377bbbbba37bbbbb733bbbb73b3
+-- 047:bba7bbbbba73bbbba73bbbbb73bbbbbb3bbbbbbbbbbbbbbbabbbbbbb7bbbbbbb
+-- 048:0737373730777777077777773077777707777777307777770377777700000000
+-- 049:3737373f777777a77777777a777777a77777777a777777a37777773300000000
+-- 050:ccccccccccccccccccccccccccc9cccccccccc9ccccccccccccccccccccccccc
+-- 051:cccccccccccccccccccccccccccccccccccccccccccc9ccccccccccccccccccc
+-- 052:6767666637667366146666136466676666336666676646644666633646667666
+-- 053:6663336666366377376666446667336663764466466666766666673336677114
+-- 054:0900000009999999044444440444444404444444044444000444400040000000
+-- 055:0000009099999990444444404444444044444440004444400004444000000004
+-- 056:0440aa0004403309000000090111110004444411044444443a44444403000000
+-- 057:00aa0440e0330440900000000011111011444440444444404444441a00000030
+-- 058:bb55bb33b3551bb3b0355531bb031154bbbbb114bbbbb014bbbbbb00bbbbbbbb
+-- 059:300555bb3355bbbb11bbbbbb91bbbbbb90bbbbbb40bbbbbb00bbbbbbbbbbbbbb
+-- 060:bbbbbbb1bbbbbbb3bbbbbbb4bbbbbbb4bbbbbbb4bbbbbb44bbbbb111bbbb5555
+-- 061:3bbbbbbb9bbbbbbb9bbbbbbb9bbbbbbb9bbbbbbb49bbbbbb449bbbbb55bbbbbb
+-- </TILES>
+
+-- <SPRITES>
+-- 000:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 001:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 002:bbbbbbb1bbbbbb14bbbbb111bbbb5111bbbb511cbbbbb1f2bbbbb0f2bbbbbb4c
+-- 003:411bbbbb1171bbbb41171bbb41171bbbccc11bbbcc2f1bbbcc2f0bbb99c4bbbb
+-- 004:bbbbbbb1bbbbbb14bb9cc111b4999111bbbbb11cbbccb1f2b999c0f299949c4c
+-- 005:411bbbbb1171bbbb41171bbb41171bbbccc11bbbcc2f1bbbcc2f0bbb99c4bbbb
+-- 006:bbbbbbbbbbb55b5bbbb55bbbbb5bb5bbbb5bb5bbb055bb5bbb0555bbbb3bb5bb
+-- 007:bbbbbbbb5bb55bbbbbb55bbbbb5bb5bbbb5bb5bbb055bb5bbb0555bbbb3bb5bb
+-- 008:bbbbbbbbbbb1bbbdbbbbbbffbbbbbdffb1bbbf7fbbbb7ffdbbbbf7a3bbb77aaa
+-- 009:bbbbbbbbdbbb1bbbfdbbbbbbffbbbbbbfdfbbbbbfd7bbbbbdfd7bbb13add7bbb
+-- 010:888888888888888888888888888888888888f88888dd8f888888888888888888
+-- 011:88888888888888888888dd888888888888888888888888888888888888888888
+-- 012:bbbbbbbbbbbbbbbbbbbbbb5bbbbbbbbbbbbbbbbbbbb00bbbbb07700bbb077770
+-- 013:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0bbb0bb070b070b070b070077707770777
+-- 014:bbbbbbbbbbbbbbbbbbbbbbbbbbb0bbbbbb070bbbbb070bbb007770bb0777a0bb
+-- 015:bbbbbbbbbbbbbbbbbbbbbbbbbbbbb5bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 016:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 017:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 018:bbbb1164bbb14666bbb11666bbb44144bbbbb166bbbbb288bbbbb288bbbb2222
+-- 019:444911bb6666991b6666691bdd44111b666614cb22282ccb2b2222bb2bbbbbbb
+-- 020:bbb911645b916666b991666699911144bbb44166bbbcc282bb4b2222bbbbbbbb
+-- 021:444911bb6666991b6666611bdd44144c66661bbb22882bbbb2882b4bb22222bb
+-- 022:b355bb5bb35bbbb5b5b5b5b5b55b5b5b00550500bb0000bbbbb14bbbb5bbbbbb
+-- 023:b355bb5bb35bbbb5b5b5b5b5b55b5b5b00550500bb0000bbbbb14b5bbbbbbbbb
+-- 024:bbb73a7abb33aa3abb3aa33ab37a7317b113113a37555713bbbbbb55bb3bbbbb
+-- 025:17add5bb13aad7bbd17aaa7bad13aa7baad11ad7755551775bb3b55bbbbbbb1b
+-- 026:8888888888888888888888888888888888888888888df8888888888888888888
+-- 027:88f888888d8f8888888888888888888888888888888888888888888888888888
+-- 028:b0777770b0077770b0a0070ab0aaa00ab00aaaa7bbb00aa0bbbbb00bbbbbbbbb
+-- 029:707077777000a777a700aaa0a0b0aaaaa0b0aa0a0000000007a7a7a707a7a7a7
+-- 030:700aa0bba0aaa0bba0a00b00a00bbb0aa0bbbbb000000070a7a7a70aa7a7a70a
+-- 031:bbbbbbbb00000bbbaaaaa00b0a0a0a0baaaaa0bb0700000ba0a7a70ba0a7a70b
+-- 032:000000020081c6420081c6e70081844200800042000000e70080004200000040
+-- 033:01008100870042c0414241c08301808005804600c342a200010021000000c200
+-- 034:0180000080014580800101808001c7e380010180800145808001000001800000
+-- 035:00000000000000020000000200c3000100000001810081808100818001000000
+-- 036:6777666666463366643666367333316666666336666663667663166767366776
+-- 037:6776366666676366677666367666666763366366666336767666666367366666
+-- 038:6777666660000000099999990900000009044444090444440904444409044444
+-- 039:6776366600000006999999900000009044444090444440904444409044444090
+-- 040:67776666666000060000aa000cc0dd0c0990dd090940aa040940aa040440aa04
+-- 041:677636666000066600aa0000c0dd0cc090da099040aa049040aa049040aa0440
+-- 042:bbbbbbbbbbbbbb33bbbb3355bbb35555bb353553bb035055bb033505bbb00335
+-- 043:bbbbbbbb33bbbbbb5551bbbb5bbb1bbb53bbb5bb355135bb511355bb555bb5bb
+-- 044:bb444444b4ffffffb4f0f00fb4f0f0f0b4f0f0f0b4f0f0f0b1ffffffbb111444
+-- 045:44999bbbffffa9bbf00ff4bbf0f0f4bbf0f0f4bbf0f0f4bbfffff4bb44444bbb
+-- 046:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbababbbbb377bbbbba37bbbbb733bbbb73b3
+-- 047:bba7bbbbba73bbbba73bbbbb73bbbbbb3bbbbbbbbbbbbbbbabbbbbbb7bbbbbbb
+-- 048:000000008181818142414242420102022180818121804021c0e1e1c000000000
+-- 049:00000000428383834140400221c1c101c002220180212180e1c0c08000000000
+-- 050:000000008381000042428181c122818122c3000021018181c0e0818100000001
+-- 051:000000000300c08181c38142c000030281c381810300c0000000008000000000
+-- 052:6767666637667366146666136466676666336666676646644666633646667666
+-- 053:6663336666366377376666446667336663764466466666766666673336677114
+-- 054:0900000009999999044444440444444404444444044444000444400040000000
+-- 055:0000009099999990444444404444444044444440004444400004444000000004
+-- 056:0440aa0004403309000000090111110004444411044444443a44444403000000
+-- 057:00aa0440e0330440900000000011111011444440444444404444441a00000030
+-- 058:bb55bb33b3551bb3b0355531bb031154bbbbb114bbbbb014bbbbbb00bbbbbbbb
+-- 059:300555bb3355bbbb11bbbbbb91bbbbbb90bbbbbb40bbbbbb00bbbbbbbbbbbbbb
+-- 060:bbbbbbb1bbbbbbb3bbbbbbb4bbbbbbb4bbbbbbb4bbbbbb44bbbbb111bbbb5555
+-- 061:3bbbbbbb9bbbbbbb9bbbbbbb9bbbbbbb9bbbbbbb49bbbbbb449bbbbb55bbbbbb
+-- 064:0083e181814242424242424043e3e1202322222020222222c122e1c100100000
+-- 065:c181c381424040424240404022e0e0202220202722202022e1c120c100000000
+-- 066:428307424201024242010241e18001e0218001212180212121c1e02100000000
+-- 067:4044448140c64442404544426022a2222022a22221222322e12223c100000200
+-- 080:c381e3814242424242424240e122e18120a221022023222220c122c100000000
+-- 081:87444444414444440144444480224222802242a28022416380c1802200000000
+-- 082:4444c3c1424402404142014080818020418040204180222022c1e1e000000000
+-- 083:000780004004410040042200800200008002000001020000018300e300000000
+-- 096:00006000e0814000c102c18103c24240002322200022222200c5e1c100000000
+-- 097:0400060004000100858101834242c34422a1804422208087c1c1800400000083
+-- 098:4000004040010041c1000241420100e0220102a0228002212180422100018100
+-- 099:40000000400000004061a18120a262422022224220222242c022228100000100
+-- 112:000000000000000000004307818380808242400142424002c18340c140020000
+-- 113:0100000001000000c34242228042422280424222844282a20383016100000000
+-- 114:0000000100000080820000808244c34001840180820380808202c30100c10000
+-- 115:01800000010100000101c4000102230001010000010100000180000000000000
+-- 137:010111111e1eeeee01e555551e5522221e5222221e5222221e5222221e522222
+-- 138:11111111eeeeeeee555555552222222222222222222222222222222222222222
+-- 139:11111010eeeee1e155555e10222255e1222225e1222225e1222225e1222225e1
+-- 140:000000000011111101ecceee01ec111101c11aaa01e1aaaa01e1aaaa01c1aaaa
+-- 141:0000000011111111eee9ccee11111111aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+-- 142:0000000011111111eeeeeecc11111111aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+-- 143:0000000011111100c9ecee101111ce10aaa11c10aaaa1e10aaaa1e10aaaa1e10
+-- 153:1e5222221e5222221e5222221e5222221e5222221e5222221e5222221e522222
+-- 155:222225e1222225e1222225e1222225e1222225e1222225e1222225e1222225e1
+-- 156:01e1aaaa01e1aaaa01e1aaaa01e1aaaa01e1aaaa01e1aaaa01c1aaaa01c1aaaa
+-- 157:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+-- 158:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+-- 159:aaaa1e10aaaa1c10aaaa1c10aaaa1910aaaa1910aaaa1c10aaaa1e10aaaa1e10
+-- 169:1e5222221e5222221e5222221e5222221e55222201e555551e1eeeee01011111
+-- 170:222222222222222222222222222222222222222255555555eeeeeeee11111111
+-- 171:222225e1222225e1222225e1222225e1222255e155555e10eeeee1e111111010
+-- 172:01e1aaaa01e1aaaa01e1aaaa01c1aaaa0191aaaa0191aaaa0191aaaa0191aaaa
+-- 173:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+-- 174:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+-- 175:aaaa1e10aaaa1e10aaaa1e10aaaa1e10aaaa1e10aaaa1e10aaaa1c10aaaa1c10
+-- 188:01c1aaaa01e1aaaa01e1aaaa01e1aaaa01e1aaaa01e1aaaa01e1aaaa0191aaaa
+-- 189:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+-- 190:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+-- 191:aaaa1910aaaa1e10aaaa1e10aaaa1e10aaaa1e10aaaa1e10aaaa1e10aaaa1910
+-- 192:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0
+-- 193:eeeeeeeeeeeeeeeeeeeee000eee00133ee013700e03770170133133713713373
+-- 194:eeeeeeeeeeeeeeee00000eee3030100e11100131711130131333130137711111
+-- 195:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0eeeeeee10eeeeee310eeeee771eeeee
+-- 196:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
+-- 197:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee100eee00000e0000033e0133330
+-- 198:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000eeeee0000000e0000300010133303
+-- 199:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee30eeeeee030eeeee
+-- 200:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 201:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbebbbbbb9eebbbb93c9bbb9e
+-- 202:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbeebbbbbbeebbbbbeee9bbb9eeee9bbe9
+-- 203:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbebbbbbbb3bbbbbbb
+-- 204:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
+-- 205:eeeeeeeeeeeeeeeeeeeeeee7eeeee77deeee7a7aeee7fff7e77fafff3ac7ffff
+-- 206:eeeeeeeeaaaaaeeedffffaeeffffffaeffffaaaaaffaedea7aa98ddaa7a928d7
+-- 207:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
+-- 208:eeeeeee0eeeeeee0eeeeeee1eeeeeee0eeeeeee0eeeeeee0eeeeeee0eeeeeee0
+-- 209:0113371711033137101111331010111310001013100000131000011000000119
+-- 210:77117710737770003077166431316ccc0131cccc0131cccc0006cccc66400cc4
+-- 211:1770eeee0330eeee11330eee61130eee61010eee930130ee900010ee004000ee
+-- 212:eeeeeeeeeeeeeee0eeeeeee0eeeeee01eeeeee01eeeeee01eeeeee00eeeeee00
+-- 213:001100010003300111101100111100140101114c000010cc000000cc0cc001c4
+-- 214:30330001002300001100140100100441cc006c4140cc0cc0000044009f846c08
+-- 215:030eeeee033eeeee033eeeee003eeeee00eeeeee00eeeeee1eeeeeee0eeeeeee
+-- 216:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbf
+-- 217:9e9ee9ee9ee949ceb9eeeeffb999eeeebbfafcaabffff919fffffccfa1affcc4
+-- 218:e6ceee9de66e9988fffefe99eeeeee99afff4cccccccccccffacccff99ffaf44
+-- 219:9bbbbbbb9bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+-- 220:eeeeeee3eeeeee7feeeeee3feeeee73feeeee3aaeeeee3a3eeeeee3aeeeeeee3
+-- 221:7fff7ffafaaaa7a7aa77aa44aaaa33cc77337acc373aaa94aaccaaccaa9caacc
+-- 222:aa7ae2ea4444444c999ccc99ccc999ccaaaaacbb444119444fa4491ac449ccc1
+-- 223:eeeeeeeeeeeeeeeeaeeeeeeeceeeeeeebbeeeeee4eeeeeee4eeeeeee9eeeeeee
+-- 224:eeeeeee0eeeeeeeeeeeeeeeeeeeeee00eeeee000eeeee000eeeee000eeeee000
+-- 225:06c001344c4403c94c4403cc094403cc06c133cc000731cc0000017c0000014c
+-- 226:000466c42214ccc6f81cccc0ccccccc1ccccccccccccc64ccccccccccc46664c
+-- 227:0130e0ee0230eeeef830eeeecc30eeeec600eeeec400eeee6400eeee40e0eeee
+-- 228:eeeeee00eeeeeee0eeeeeee0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
+-- 229:0c4901cc091c01cc004c104c0099100400040310e0040110ee040013ee014003
+-- 230:4c24ccc2cc4cccc9ccccc99cccc00011400001010334ccc13064000030c46640
+-- 231:1eeeeeee1eeeeeee1eeeeeee0eeeeeee0eeeeeee10eeeeee00eeeeee0eeeeeee
+-- 232:bbbbffffbbbbbbbfbbbbbbffbbbbbffabbbbbbbbbbbbbbbabbbbb11cbbbb122a
+-- 233:a99facc9f7dfacccff3facccafaffcccff3ffdccff3fff7fff3fffd9cf3afaff
+-- 234:114cc91cc1cccccccc9cc9cccff111fcffffaffffa1111cff1cffc1fffaffaff
+-- 235:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbfbbbbbbbf2bbbbbbf221bbbb
+-- 236:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaeeeeeeafeeeeaaff
+-- 237:3e94a79cee49a7a9ee41a7aaee7a7a7aee7a7aaaa37a7aa7a73a7aa7fa733a7a
+-- 238:ccccccc9ccc9aff9acc300aaaaffaa7fafa34660a7afffffaaaffaffaaaffaff
+-- 239:ceeeeeeeceeeeeee4aeeeeeefaaeeeee77aeeeeea7aeeeeeaaaeeeeea7aaeeee
+-- 240:eeeeee00eeeeee00eeeeee00eeeeeeeeeeeeeeeeeeeeeeeeeeeeee00eeee0000
+-- 241:0100010400001061000011c4000106cc001144cc001000040103000000003300
+-- 242:ccc444c44ccccc401146640044000010c6000010cc4000007301000000040001
+-- 243:00e10eeee0ee0eeee0eeeeeee1eeeeeeeeeeeeeeeeeeeeee0eeeeeee000eeeee
+-- 244:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee011eee00111ee011111e0000000
+-- 245:e0104400e0110440e01110440011100410011000111000000000000000000000
+-- 246:3131100103131313010131304010101040000000414400014410000004400000
+-- 247:0eeeeeee0eeeeeee0eeeeeeeeeeeeeee00eeeeee01000eee001110ee0000000e
+-- 248:bbb13222bb132882bb222e18b1228821b222227e1288422e2888882828888888
+-- 249:3f42afff27f2aafa82a22aaa8822703ae82e2720e88888218888222888822222
+-- 250:fffffffffffffffffffffffaafaffafaaafaffa20aafaa02810aa22228222222
+-- 251:a2121bbba21e2bbb0a1181bb2ae282bb2ee2281b2222222b2222222b2222222b
+-- 252:eeeadfffeeaffaffeaffffafeafffffaaffffffaaffffffafffffffaffffffff
+-- 253:fa70337affaa037affaaa037affaa803f7faaa70ff3aaaa8dfff7aaaafffffff
+-- 254:aaaaffaf7aaaffaf7aaafacf37aafa7f333a7f0f3037330aff003003ffffffff
+-- 255:f7afaeeef7a7faaea77afffa70ffafff73ffafff0fffdafffffffafffffffaff
+-- </SPRITES>
+
+-- <PALETTE>
+-- 000:140c1c44243430346d4e4a4e854c30346524d04648757161597dced27d2c8595a16daa2cd2aa996dc2cadad45edeeed6
+-- </PALETTE>
+

+ 12 - 0
rpg/tic-rpg.tiled-project

@@ -0,0 +1,12 @@
+{
+    "automappingRulesFile": "",
+    "commands": [
+    ],
+    "compatibilityVersion": 1100,
+    "extensionsPath": "extensions",
+    "folders": [
+        "."
+    ],
+    "propertyTypes": [
+    ]
+}

+ 32 - 0
rpg/tic-rpg.tiled-session

@@ -0,0 +1,32 @@
+{
+    "Map/SizeTest": {
+        "height": 4300,
+        "width": 2
+    },
+    "activeFile": "rpg-tiles.tsx",
+    "expandedProjectPaths": [
+    ],
+    "fileStates": {
+        "rpg-tiles.tsx": {
+            "scaleInDock": 2,
+            "scaleInEditor": 1
+        }
+    },
+    "last.imagePath": "/Users/michael/repos/tic80-stuff/rpg",
+    "map.height": 90,
+    "map.tileHeight": 8,
+    "map.tileWidth": 8,
+    "map.width": 120,
+    "openFiles": [
+        "rpg-tiles.tsx"
+    ],
+    "project": "tic-rpg.tiled-project",
+    "recentFiles": [
+        "rpg-tiles.tsx"
+    ],
+    "tileset.lastUsedFormat": "tsx",
+    "tileset.tileSize": {
+        "height": 8,
+        "width": 8
+    }
+}