Tumgik
mailorder-bees · 6 years
Text
for every beginning, there’s an end
I’ve struggled again and again with writing this.  I kicked around a few openings to this before i decided maybe I should just get to the point.  At the end of Grand Prix Dallas-Fort Worth, I will be retiring as a magic judge, and with it my involvement with tournament magic.
I’ve had a lot of thoughts about this, but it really boils down to a few things: I’m not enjoying it as much as I used to, certain elements in the community have had a bad influence, culminating in one last proverbial straw on the camel’s back, and finally I’d reevaluated where I want to be spending my time.
Ultimately, judging was a hobby to me. That’s all I wanted out of it.  It’s pretty telling when you go to an event and spend the whole time counting down to the end, isn’t it?  I had this revelation in the middle of an FNM.  I used to live for these, but there i was, staring blankly ahead, wishing I was at home watching agdq or something.  Heck, it had even gotten to the point where I didn’t care to play the game either.  This isn’t to say I hated everything, I had some friends, though many of them had moved away or lived in other places in the first place.  Those people kept me in as long as they did even after the enjoyment was gone.  It’s no secret I’d been very burned out last year.  I tried one last time to get back in, but the spark was gone.  I was already on the fence, and that was it. 
I don’t really want to talk about the events surrounding the background check thing, but that was ultimately the straw that broke the camel’s back, so to speak.  Having to deal with toxic elements wears you down, and I couldn’t take it any more.  In a situation like that, ultimately I’ve gotta do what’s best for me.
Finally, I just decided it was time for a change.  Magic had been a big part of me since 2010.  Through a gender transition.  Through a long relationship ending.  The game was there.  But now I feel it’s time for me to move on.  I do feel sad for leaving something behind that was such a big part of me for so long, but I know it’s best for me.  What am I gonna do with my time?  Well, I’ve picked up roller derby, for one.  I’m a disaster on wheels, but I’m getting better.  I’m doing more personal programming projects and goofing around.  I’ll still be around a while.  Magic folks if you wanna say hi, feel free to message me.
I still have plans for 3 events.  The Hunter Burton Memorial, Star City Games Open DFW in march, and finally GP DFW.  I hope to see y’all there.
1 note · View note
mailorder-bees · 6 years
Text
oh yeah and i tested pichu by replacing one of the starters in oak’s lab with our little mousy friend.  sorry bulbasaur, you’ll always be my favorite starter. i also added pichu to our route 1 wild table. 
1 note · View note
mailorder-bees · 6 years
Text
What do you mean you don’t remember pichu being in pokemon red/blue?
So as I have previously mentioned, my project has been to make a playable pichu in pokemon red/blue.  As mentioned previously, I’d found the basic template that I was able to turn into a pichu.  We had our basic asset.  what we did NOT have, however, was everything hooked in the backend.  
I didn’t bother worrying TOO much about cart size/whatever since A) i probably won’t be running this on hardware and B) since when have I ever thought that far ahead?  I remembered that as part of the old man glitch, there are unused pokemon slots internally in the game.  Each pokemon has two numbers:  the ROM order number and the pokedex number.  For example, while Rhydon may be pokedex #112, it’s actually internal ROM number 1.  I decided that I’d make Missingno 1F actually be a pokemon, soooooo:
Tumblr media
This is in a disassembled file that basically assigns a pokemon to an internal number.  But there was still much to hook up.  Much of it in the back end, associating constants to files and such.  Tab A in Slot A, etc.  just inserting “PICHU” where it needed to be.  The exciting part happens when trying to insert a cry, make a pokedex entry, and load the dang sprite.  The sprite proved to be the most problematic to me, which even involved a few pretty funny crashes because I forgot to make all the files point to the right place.  Ok, I thought they were funny, but to most people it was just a garbled screen and the game emitting a tone.  What?  I find weird stuff funny.
So let’s start with the pokedex.  I found a .asm that contained all the pokedex entries.  I figured the order for them mattered, since they all appeared to be in internal order, so I sandwiched the pichu entry between Tangela and Growlithe
Tumblr media
So here’s the part that has the basic entries.  The first part is dex type.  Then we have height, which appears to be foot,inch.  Then there’s weight, which for pichu would be 4.4 lbs.  After that appears to be a separate area in a separate file for our dex entry.  Well, let’s go find that.
Tumblr media
Here we are.  I probably could have looked more into how this would actually distribute on screen but *shrug*.
The cry was also simple enough.  I just found the cry data for Missingno 1F and replaced it with our boy, pichu.
Tumblr media
our first number there is cry type.  I made it match pikachu’s basic cry type.  The second number is pitch, and the third number is length.  I tried to make it shorter and higher than pikachu’s.  We even caught another missingno in our code next to pichu.  Maybe I’ll add something else. 
Sprite at first i wasn’t overly concerned with but I eventually just grabbed a pic of pichu and made it greyscale.   Now the image didn’t have the right palate, but that didnt matter becauuuuuse...
Tumblr media
aw beans.  Here’s one of the crashes.  what did i do wrong?  well it turns out I forgot to add pichu’s sprite data to the dang game in the first place!  In main.asm, which sets up the entire dang ROM, complete with header and checksum data, etc (I may talk about this more later as I build more of my own stuff), there’s data banks that contain sprite data....including where our pichu SHOULD go.  After some trial and error and trying to overstuff our banks, I declared a new bank and put our pichu in there.
Tumblr media Tumblr media
I also hooked up a few more constants in the background but our sprite was still garbled.  What was I doing wrong?  Well it turns out I missed hooking up a few things in home.asm related to our pichu’s sprite.
Tumblr media
That’s not quite right either.
It basically involved comparing the sprite it’s trying to fetch with the address it should be contained in and uncompressing the sprite.  With all that added, we got:
Tumblr media
I guess I didn’t account for the actual palate.  Reduced it to 4 “colors” and:
Tumblr media
There it is!!!  
Tumblr media Tumblr media
Next on my to do list: get a FIRM understanding of what the macro UncompressMonSprite does and maybe ....add a move???  Immediate future though, I’m gonna look more at from-scratch homebrew.  
5 notes · View notes
mailorder-bees · 6 years
Text
I’ve almost got pichu working in red/blue.  probably write more tomorrow
1 note · View note
mailorder-bees · 7 years
Text
hello world
Tumblr media
it’s not much, but check it out edit: probably should have specified, that’s running in a game boy emulator
3 notes · View notes
mailorder-bees · 7 years
Text
I’m still working on a thing.  I’ve got a small thingie coming soon; i’m playing around with making game boy stuff ground-up.  it’s just gonna be, like, a hello world first, but gotta start somewhere, right?
0 notes
mailorder-bees · 7 years
Text
missingno pt1.
i’m probably the millionth person to write about this, but i dont care, i think its cool.
I’ve always been fascinated by the missingno bug; specifically the why and how.  at its core; it’s an oversight.  The strip of land on cinnabar island is noted as being able to see wild pokemon, BUT it has no wild data declared. when you encounter a wild battle, the battle routine looks at a set of data in memory where it finds what wild pokemon are allowed to be found at a location.  This is pulled into memory when you enter an area.  Let’s say we enter route one.  The game finds the area declaring what’s in route one, and puts it in memory where the wild pokemon battle routine can find it.  Now if it can’t find anything, it defaults to the previous data.  Noramally for cinnabar island, this is no problem, as it’s usually either an ocean route we were just in (which is the expected pokemon, declared in this disassembly as WaterMons).  In cases where we just flew from somewhere, though, this could be anything as wild as, say safari zone pokemon.  This is all fine and may be a little unsusal, but what if the section of memory for wild pokemon was...filled with garbage? enter the old man battle in viridian city. 
Tumblr media Tumblr media
hey, we’re not us right now.  
As you can see, we’re named “OLD MAN”.  the game has to put our name somewhere, so where do we end up? 
Tumblr media
our name in it’s usual address
Tumblr media
old man name where our name used to be
why in the memory addresses for loaded wild pokemon data, of course!  it’s not being used right now, and the second we set foot out of town, we’ll load up some new ones! 
Tumblr media
here’s what the wild addresses usually look like.  this is a valid wild pokemon state 
Tumblr media
our name in the wild area
When you enter a wild designated area, like a route, the game loads up the wild data for that area.
...that is unless we fly immediately somewhere where there AREN’T any, like a city.  like, say, cinnabar island.  Normally this isn’t a problem, as there normally aren’t any wild designated places in the city, and when you leave for one, the game properly loads some.  
BUUUUT as i mentioned, cinnabar island has one strip on the eastern coast that is designated for wild battles with no wild data.
Tumblr media
look at that shore.  what could go wrong?
remember, the data in the wild slot right now is our name.
so what happens when the game attempts to interpret this as wild data?
Tumblr media
oh.  oh dear.  THIS happens.
so our boy ‘M/missingno has a HUGE sprite, actually. the memory addresses that handle sprites are right next to the area for the hall of fame.  
Tumblr media
here we are basically at the border of sprite and hall of fame.  Missingno is SO BIG it overflows from sprite data into the hall of fame data.  for those of y’all who encountered this boy as kids, this is why your hall of fame data went all screwy afterwards.  pretty cool, right?
it also sends some junk data to the routine that sets seen/unseen pokedex flags.  through some address goofery, it’s seen address JUST HAPPENS to fall on the address for our sixth bag slot item count.
Tumblr media
here’s before.  our normal item count
Tumblr media
and here’s after.  it’s basically set that address to show an affirmative “we’ve seen this” flag for display in the pokedex.  since this is beyond bounds; we end up setting the quantity of our bag item.
now to me, the way to fix this appears to be to make fly call the load wild data stuff when it ends.  maybe.  i haven’t dug into that super hard yet, but i’ll take a look.
0 notes
mailorder-bees · 7 years
Text
next: let’s make a pichu
So while scanning through all this code; i’ve stumbled across how it appears pokemon are handled.  they’re declared in files that are <pokemon name>.asm; and these files appear to follow a basic template.  
I’m a big fan of pikachu.  i’m not even gonna try to hide it, so let’s take a look at pikachu.asm
Tumblr media
it’s very nicely commented for us, but it lays out it’s hp and stats (fun fact, special does basically nothing in this game.  if i’m feeling super adventurous, i could fix this later?), sprite details, default moveset, and what it can learn from TMs.  appears to terminate with a 0.
extrapolating from this, i can create a new one, and then just hook up the nuts and bolts in the backend.  this’ll be a fun project.  let’s continue with the small yellow mouse based content and make a pichu!  i like pichu, pichu’s cute.
Tumblr media
well here it is.  it’s not runnable right now, it just kinda...exists, but later i’ll figure out how to make it all work
2 notes · View notes
mailorder-bees · 7 years
Text
i guess maybe i should introduce myself
hi, im emma.  i’m a trans woman who likes to program and poke at things.  im a lot better at taking things apart than i am putting them back together, which can cause problems.  i like to play guitar.  im a software engineer for a living.  i like magic the gathering and am a certified level 2 judge.  i don’t really say a lot in real life.  im living with adhd which rather sucks actually.  im a big fan of synthwave music and science fiction.  i have cats.
#hi
1 note · View note
mailorder-bees · 7 years
Text
Pokered disassembly
i’ve been messing around with a disassembly of pokemon red for a little while now.  I’d done assembly language stuff in the past.....about 9 or so years ago.  I haven’t really messed with it since, but i decided why not.  Naturally the first thing i decide to do is cheat, as a way to become oriented with the way its setup and ease myself back into assembly syntax.
these first few posts are little experiments that have already taken place, a few of them weeks ago, but i’ve been encouraged to get these thoughts down into a blog or something, so here it is; i’ll be posting the first ones as if the initial ones are ongoing.  if you check my twitter, maybe you’ve seen some of the other goofy things ive done with it.  
I take a dive into the code and find...
Tumblr media
something called oakspeech.asm.  this seems fun to mess with.  i found the a bit that appears to load a constant called POTION into memory and call a function called AddItemToInventory.  Well, we have a potion in the computer when we start, so I think i know where this is going.  Let’s have some fun with it. I COULD make it a super potion, but where’s the fun in that.  besides, i should probably check to see what the item name constants are; as that appears thats how this disassembly refers to them.  why make it a super potion when i could give myself ....master ball.  rather give myself a TON of master balls and trivialize half the game!
Tumblr media
y’know, i could probably do this again.  what say we give us a....bicycle?  right from the get go?  walking’s for dorks; and we’re cool, right?  
Tumblr media
well, fire up the game, and
Tumblr media
hey cool!  it worked!  ok, so i’m rusty, but maybe thanks to a combination of memory and very very helpful comments and function naming from the whoever’s maintaining the pokered disassembly, i’ve managed to cheat!
I know that pokemon red and blue had a ton of defects that made it into the final version, so i could probably patch some of those out; as well as maybe just start adding stuff too.  and worst come to worst, i could always just start making havok.  for example, disabling the check that sees if im allowed to bike indoors
Tumblr media
ha.  eat it oak,  not the time to use that?  as if; imma bike in your lab now. 
for some real havok i could probably let myself use pokeballs wherever which’ll probably ruin everything, and fish wherever, which could be funny too.  
next though i think i’ll see about fixing the infamous cinnabar island glitch, because that’s actually probably surprisingly easy.
1 note · View note