<![CDATA[Parzivail]]>https://parzivail.com/http://parzivail.com/favicon.pngParzivailhttps://parzivail.com/Ghost 2.16Mon, 20 Jun 2022 16:14:32 GMT60<![CDATA[Porsche Seat to Office Chair]]>https://parzivail.com/porsche-seat-to-office-chair/5c7ac6a85b61601bc9f84471Mon, 20 Aug 2018 01:50:52 GMT

Who doesn't want an office chair made from a Porsche seat?

Materials

  • 1x Porsche 996 seat.
    • DO NOT get one with airbags. Airbags are very dangerous.
    • We got a pair from a guy on 6SpeedOnline for cheap because they didn't have wiring harnesses. Keep in mind while you're searching for seats that they don't necessarily need to be complete.
  • 1x 0.25"x1.5"x72" steel flatbar (Amazon)
  • 4x 11mm nut/bolt/washer pairs
  • 4x 1/2" nut/bolt/washer pairs
  • 1x generic office chair to sacrifice to get the base

Finished Product:

Porsche Seat to Office Chair

Assembly

  • Remove bolted down parts until you're left with these two bars. Put them in the position closest to the body so that they're 12.5" apart center-to-center.
    Porsche Seat to Office Chair

  • Cut the steel flatbar to produce two 15" lengths.
    Porsche Seat to Office Chair

  • Drill two centered holes 12.5" apart to use to bolt the flatbar to the chair's bars, leaving about 1.5" on one end.
    Porsche Seat to Office Chair

  • Position the flatbar lengths on top of eachother and align the holes with a pencil. Grip them together so the next steps will stay aligned.
    Porsche Seat to Office Chair

  • Position the chair base on the bars and mark the holes for drilling. Take note that the base isn't centered on this bar. This is because the chair needs to be balanced on the base's piston, and the seat assembly isn't balanced around the center.
    Porsche Seat to Office Chair

  • Once the holes are drilled, separate the lengths and insert the 11mm bolt assemblies as shown to affix the base to the lengths
    Porsche Seat to Office Chair

  • Measure the width of your flatbar-and-base assembly edge-to-edge and measure the bars on the chair where you'll be bolting them down to find out how far from each edge you'll need to center it.
    Porsche Seat to Office Chair

  • Use a vicegrip to hold the assembly in place where it'll finally go on the chair.
    Porsche Seat to Office Chair

  • Use the holes in the flatbar as a guide to drill the holes in the chair's bars. Be sure to adequately vacuum the area while drilling. The metal shavings go everywhere.
    Porsche Seat to Office Chair

  • Use the 1/2" bolts to keep the assembly steady after each drilled hole. Don't bolt them in, just insert them for now.
    Porsche Seat to Office Chair

  • After drilling, flip the bars around so you can reverse the bolts for easier assembly.
    Porsche Seat to Office Chair
    Porsche Seat to Office Chair

  • Tighten the nuts, making sure to use appropriate washers. Insert the base onto the piston if it wasn't already.
    Porsche Seat to Office Chair

  • Presto! You're the proud owner of a Porsche office chair!
    Porsche Seat to Office Chair

]]>
<![CDATA[Generating complex, multi-biome procedural terrain with Simplex noise in PSWG]]>https://parzivail.com/procedural-terrain-generaion/5c7ac6a85b61601bc9f84470Sun, 19 Aug 2018 20:57:02 GMT

The magic at the core of Galaxies: Parzi's Star Wars Mod is adventure. In the Star Wars universe, there is every kind of biome imaginable: the barren ice tundras of the Hoth, the dry deserts and canyons of Tatooine, and the molten wastelands of Sullust, to name a few.

The adventure would be dull and boring if there weren't any planets to explore, but manually creating the terrain for each planet would be a colossal task requiring absurd amounts of time to create and to load into the game. Enter procedural generation.

Procedural generation makes it possible to simply define how the planet should look, and the world generation system will create a world each time that has the same general features but is, in itself, unique.

The mod's terrain generation framework is centered around a process we call Multi-Composite Terrain. At it's most basic level, it combines different kinds of terrain on a sliding scale of weights that determine the influence of a particular terrain generator at any position. Let's take a closer look at each step of the process.

Generating complex, multi-biome procedural terrain with Simplex noise in PSWG

The first step is to define different biomes' terrain generators. Above, for example, we can see a terrain generator for a series of navigable canyons for the player to explore, modeled loosely on the canyons on Tatooine. The generation script uses Worley noise to generate the canyon "cells," and uses Simplex noise in octaves to make the heightmap a little more interesting.

Each biome in the world needs to be defined independently, as its own heightmap function. Let's examine how each of these terrain generators is weighted in the world generator.

Generating complex, multi-biome procedural terrain with Simplex noise in PSWG

For each point on the heightmap, a "master" Simplex noise determines a single biome interpolation value for that point. Then, a weight function for each terrain layer determines the biome weights for that point using the previously calculated interpolation scalar. The weight function can be any function where the sum of the weights for all layers at \(x\) is equal to \(1\). My weight function is

\[-\left|\left(n-1\right)x-v\right|+1\]

where \(n\) is the number of layers (\(3\) in the above example) and \(v\) is the zero-based layer index within the system (\(0\), \(1\), and \(2\) for Canyons, Dune Sea and Flatlands in the example, respectively). You can find a Desmos graph for this function here if you'd like to tinker with the values. You should ensure no weight calculation results in a negative weight by discarding negative weights or adding a domain limiter to the weight function. In the example above, a noise value was selected at the position of the point on the heightmap. The value, \(0.4\), is then fed into the weight functions for each layer. The example results in a weight of roughly \(0.8\) for Dune Sea and \(0.2\) for Canyon.

The Java implementation of this biome weighting concept would look like:

double l = getMasterNoise(x, z);
double y = 0;
for (int i = 0; i < layers.length; i++)
{
	if ((i - 1f) / n <= l && l <= (i + 1f) / n)
		y += (-Math.abs(n * l - i) + 1) * layers[i].getHeightAt(x, z);
}

After all of the weights are calculated, a height is generated for each point in the heightmap for each layer, scaled by the weight, and added together to form the final height for that point.

Generating complex, multi-biome procedural terrain with Simplex noise in PSWG

As seen here at the "border" between a flatter region and a Canyon region, this method will create smooth, fluid transitions into different biome generation functions, where biomes are defined by weights are not as binary states. This completely eliminates the need for processing to remove ugly borders between two neighboring biomes. The cover image for this post also shows a transition of two biomes, a flatter sandy biome and a larger dunes biome, not explicitly mentioned here.

]]>
<![CDATA[TI-83 Teardown, Part 2]]>https://parzivail.com/ti-83-teardown-part-2/5c7ac6a85b61601bc9f8446fSat, 18 Aug 2018 02:56:31 GMTTI-83 Teardown, Part 2

Hey all!

This is a part 2 for the first segment of the TI-83 teardown, where we disassembled the calculator and started interfacing with the LCD.

Whoops! May have lied a bit last time. Before I get to the fun part (programming!) I designed small crimp bracket in SOLIDWORKS to try and, again, minimize wear and tear on the fragile ribbon cable. Am I a bit too paranoid? Maybe. Was it fun? Absolutely!
Here's what the model turned out looking like:

TI-83 Teardown, Part 2

I 3D printed 2 of them and sandwiched them together around the new ribbon cable, all held together with 2 tiny cotter pins I had to make

TI-83 Teardown, Part 2

TI-83 Teardown, Part 2

NOW comes the fun part!

1: New connector

The old connector (you know, the IDE one I sawed off) was flakier than I would have liked. So, I soldered up a new one with some perfboard and male headers:

TI-83 Teardown, Part 2

2: Arduino wireup

I did manage to get the pinout for this display (Overall I had to kind of brute-force the pinouts until something worked, as I couldn't find anyone with this specific display version online. Turns out it's a 17-pin interface with a Toshiba T6A04A driver chip, you can find the pinout and Arduino code here) and some skeleton Arduino code to get the display running.

TI-83 Teardown, Part 2
Note: I made that image with a tiny GUI utility I made in C# that exports all 96x64 pixels of the display into one big ol' array.

3: Code Port

The Arduino code was a success, but since C++ is not my forté, I got nothing truly done except displaying static images and updating the whole screen at once. That's no fun, since this is an LCD we're playing with, not a picture frame. I decided to port what I had of my code into C# for use with my Raspberry Pi, which is running Windows 10 IoT Core. The code is available on GitHub if you're interested.

]]>
<![CDATA[TI-83 Teardown, Part 1]]>https://parzivail.com/ti-83-teardown-part-1/5c7ac6a85b61601bc9f8446eSat, 18 Aug 2018 02:48:39 GMTTI-83 Teardown, Part 1

Hey all!

Ordered a few dud TI calculators, a TI-83 Plus and two TI-86s, on Ebay a while back and finally have a use for them: their LCDs. I began to disassemble the TI-83 Plus to get to the LCD and took a few pictures of the process. Once I have the LCD, I've found another project that managed to get one working, but he's a lot more hardcore than I am so I'll be using an Arduino Mega to (hopefully) control it.

Part 1: Removing the LCD

TI-83 Teardown, Part 1
The front of the 83 looks nice, no scratches or anything. Too bad it'll never be functional again!

On the back of the 83 there were a few Torx-T6 screws that were fairly easy to get off, and a Phillips screw in the battery compartment (be sure to remove the backup battery!)

TI-83 Teardown, Part 1

After that there was a series of clips, one on the top, above the screen, and two on the lower areas of the sides that need to be un-clipped (prying carefully with a thin, flat object seemed to do the trick). They look like this:

TI-83 Teardown, Part 1

Once the case is off, you are presented with the interior! ...After you remove the board shielding. There're two Phillips screws down near the bottom. After that, there's a bit of adhesive under it that peels off fairly easy.

TI-83 Teardown, Part 1

Once the shield's off, there are a few chips that stand out on the board at first glance:

  • Inventec 6SI837, which, as far as I can tell, is an in-house 6MHz Z-80 processor
  • Fujitsu MBM29LV400TC 512KB Flash memory
  • 2x Fairchild MBM29LV400TC voltage interface transceivers

At the top, the display is mounted onto a daughter board, which is controlled by the main board via a ribbon cable. On the bottom sides, there are 2 more Phillips screws which hold down the daughter board. I removed these and, being unable to mount the irregular ribbon cable to an Adafruit Multi-pitch FPC Adapter, removed the cable entirely and carefully scratched the adhesive off the copper pads on the daughter board. I found an old IDE connector cable and cut it down to be a 2x9 connector (the one on the left) to fit the board's 17 pins.

TI-83 Teardown, Part 1

I spliced the cable and stripped the ends to prepare for the solder nightmare:

TI-83 Teardown, Part 1

TI-83 Teardown, Part 1

The solder job took about a half-hour and I coated the connections in glue (Elmers, didn't have epoxy on-hand, unfortunately) to try and decrease the chance i'll rip them off when I move the cable.

TI-83 Teardown, Part 1

Next comes the fun part: programming!

See part 2 here.

]]>
<![CDATA[Parzi's Star Wars Mod 2.0?]]>https://parzivail.com/the-end-of-parzis-star-wars-mod/5c7ac6a85b61601bc9f8446cThu, 09 Aug 2018 23:52:17 GMT

TL;DR

Parzi's Star Wars Mod 2.0?

I don't work on the old mod anymore, I work on the new one instead. The new one, Galaxies: Parzi's Star Wars Mod is being developed on the Discord for the latest versions of Minecraft. You can still download the old one here.

You're probably here because you want to download Parzi's Star Wars Mod. Well, I have good news, and I have bad news. Bad news first.

Bad news: I stopped developing PSWM a while back because I didn't have time to maintain it.

Good news: I have a new Star Wars themed mod, Galaxies: Parzi's Star Wars Mod (PSWG)! PSWG on the other hand is under very active development. However, it's still in "alpha", meaning the content it has is pretty limited. Fear not! New, amazing content is coming very soon. We release weekly alpha builds so you can always stay up-to-date with the development.

If you'd like to join in on the PSWG conversation and development, hop into the Discord, where you'll find links to alpha releases and be able to chat with the fast-growing community all pitching in to make PSWG a reality.

The homepage for PSWG can be found here.

]]>