What's the Best Trading Computer? A Desktop Or A Laptop?

GE2020: The Roar of the Swing Voter

Hi everyone, this is my first ever post here.
I run a little website called The Thought Experiment where I talk about various issues, some of them Singapore related. And one of my main interests is Singaporean politics. With the GE2020 election results, I thought I should pen down my take on what us as the electorate were trying to say.
If you like what I wrote, I also wrote another article on the state of play for GE2020 during the campaigning period, as well as 2 other articles related to GE2015 back when it was taking place.
If you don't like what I wrote, that's ok! I think the beauty of freedom of expression is that everyone is entitled to their opinion. I'm always happy to get feedback, because I do think that more public discourse about our local politics helps us to be more politically aware as a whole.
Just thought I'll share my article here to see what you guys make of it :D
Article Starts Here:
During the campaigning period, both sides sought to portray an extreme scenario of what would happen if voters did not vote for them. The Peoples’ Action Party (PAP) warned that Singaporeans that their political opponents “might eventually replace the government after July 10”. Meanwhile, the Worker’s Party (WP) stated that “there was a real risk of a wipeout of elected opposition MPs at the July 10 polls”.
Today is July 11th. As we all know, neither of these scenarios came to pass. The PAP comfortably retained its super-majority in Parliament, winning 83 out of 93 elected MP seats. But just as in GE2011, another Group Representation Constituency (GRC) has fallen to the WP. In addition, the PAP saw its vote share drop drastically, down almost 9% to 61.2% from 69.9% in GE2015.
Singapore’s electorate is unique in that a significant proportion is comprised of swing voters: Voters who don’t hold any blind allegiance to any political party, but vote based on a variety of factors both micro and macro. The above extreme scenarios were clearly targeted at these swing voters. Well, the swing voters have made their choice, their roar sending 4 more elected opposition MPs into Parliament. This article aims to unpack that roar and what it means for the state of Singaporean politics going forward.
1. The PAP is still the preferred party to form Singapore’s Government
Yes, this may come across as blindingly obvious, but it still needs to be said. The swing voter is by its very definition, liable to changes of opinion. And a large factor that determines how a swing voter votes is their perception of how their fellow swing voters are voting. If swing voters perceive that most swing voters are leaning towards voting for the opposition, they might feel compelled to vote for the incumbent. And if the reverse is true, swing voters might feel the need to shore up opposition support.
Why is this so? This is because the swing voter is trying to push the vote result into a sweet spot – one that lies between the two extreme scenarios espoused by either side. They don’t want the PAP to sweep all 93 seats in a ‘white tsunami’. Neither do they want the opposition to claim so much territory that the PAP is too weak to form the Government on its own. But because each swing voter only has a binary choice: either they vote for one side or the other (I’m ignoring the third option where they simply spoil their vote), they can’t very well say “I want to vote 0.6 for the PAP and 0.4 for the Opposition with my vote”. And so we can expect the swing voter bloc to continue being a source of uncertainty for both sides in future elections, as long as swing voters are still convinced that the PAP should be the Government.
2. Voters no longer believe that the PAP needs a ‘strong mandate’ to govern. They also don’t buy into the NCMP scheme.
Throughout the campaign period, the PAP repeatedly exhorted voters to vote for them alone. Granted, they couldn’t very well give any ground to the opposition without a fight. And therefore there was an attempt to equate voting for the PAP as voting for Singapore’s best interests. However, the main message that voters got was this: PAP will only be able to steer Singapore out of the Covid-19 pandemic if it has a strong mandate from the people.
What is a strong mandate, you may ask? While no PAP candidate publicly confirmed it, their incessant harping on the Non-Constituency Member of Parliament (NCMP) scheme as the PAP’s win-win solution for having the PAP in power and a largely de-fanged opposition presence in parliament shows that the PAP truly wanted a parliament where it held every single seat.
Clearly, the electorate has different ideas, handing Sengkang GRC to the WP and slashing the PAP’s margins in previous strongholds such as West Coast, Choa Chu Kang and Tanjong Pagar by double digit percentages. There is no doubt from the results that swing voters are convinced that a PAP supermajority is not good for Singapore. They are no longer convinced that to vote for the opposition is a vote against Singapore. They have realized, as members of a maturing democracy surely must, that one can vote for the opposition, yet still be pro-Singapore.
3. Social Media and the Internet are rewriting the electorate’s perception.
In the past, there was no way to have an easily accessible record of historical events. With the only information source available being biased mainstream media, Singaporeans could only rely on that to fill in the gaps in their memories. Therefore, Operation Coldstore became a myth of the past, and Chee Soon Juan became a crackpot in the eyes of the people, someone who should never be allowed into Parliament.
Fast forward to today. Chee won 45.2% of the votes in Bukit Batok’s Single Member Constituency (SMC). His party-mate, Dr. Paul Tambyah did even better, winning 46.26% of the votes in Bukit Panjang SMC. For someone previously seen as unfit for public office, this is an extremely good result.
Chee has been running for elections in Singapore for a long time, and only now is there a significant change in the way he is perceived (and supported) by the electorate. Why? Because of social media and the internet, two things which the PAP does not have absolute control over. With the ability to conduct interviews with social media personalities as well as upload party videos on Youtube, he has been able to display a side of himself to people that the PAP did not want them to see: someone who is merely human just like them, but who is standing up for what he believes in.
4. Reserved Election Shenanigans and Tan Cheng Block: The electorate has not forgotten.
Tan Cheng Bock almost became our President in 2011. There are many who say that if Tan Kin Lian and Tan Jee Say had not run, Tony Tan would not have been elected. In March 2016, Tan Cheng Bock publicly declared his interest to run for the next Presidential Election that would be held in 2017. The close result of 2011 and Tan Cheng Bock’s imminent candidacy made the upcoming Presidential Election one that was eagerly anticipated.
That is, until the PAP shut down his bid for the presidency just a few months later in September 2016, using its supermajority in Parliament to pass a “reserved election” in which only members of a particular race could take part. Under the new rules that they had drawn up for themselves, it was decreed that only Malays could take part. And not just any Malay. The candidate had to either be a senior executive managing a firm that had S$500 million in shareholders’ equity, or be the Speaker of Parliament or a similarly high post in the public sector (the exact criteria are a bit more in-depth than this, but this is the gist of it. You can find the full criteria here). And who was the Speaker of Parliament at the time? Mdm Halimah, who was conveniently of the right race (Although there was some hooha about her actually being Indian). With the extremely strict private sector criteria and the PAP being able to effectively control who the public sector candidate was, it came as no surprise that Mdm Halimah was declared the only eligible candidate on Nomination Day. A day later, she was Singapore’s President. And all without a single vote cast by any Singaporean.
Of course, the PAP denied that this was a move specifically aimed at blocking Tan Cheng Bock’s bid for the presidency. Chan Chun Sing, Singapore’s current Minister of Trade and Industry, stated in 2017 that the Government was prepared to pay the political price over making these changes to the Constitution.
We can clearly see from the GE2020 results that a price was indeed paid. A loss of almost 9% of vote share is very significant, although a combination of the first-past-the-post rule and the GRC system ensured that the PAP still won 89.2% of the seats in Parliament despite only garnering 61.2% of the votes. On the whole, it’s naught but a scratch to the PAP’s overwhelming dominance in Parliament. The PAP still retains its supermajority and can make changes to the Constitution anytime that it likes. But the swing voters have sent a clear signal that they have not been persuaded by the PAP’s rationale.
5. Swing Voters do not want Racial Politics.
In 2019, Heng Swee Keat, Singapore’s Deputy Prime Minister and the man who is next in line to be Prime Minister (PM) commented that Singapore was not ready to have a non-Chinese PM. He further added that race is an issue that always arises at election-time in Singapore.
Let us now consider the GE2015 results. Tharman Shanmugaratnam, Singapore’s Senior Minister and someone whom many have expressed keenness to be Singapore’s next PM, obtained 79.28% of the vote share in Jurong GRC. This was above even the current Prime Minister Lee Hsien Loong, who scored 78.63% in Ang Mo Kio GRC. Tharman’s score was the highest in the entire election.
And now let us consider the GE2020 results. Tharman scored 74.62% in Jurong, again the highest scorer of the entire election, while Hsien Loong scored 71.91%. So Tharman beat the current PM again, and by an even bigger margin than the last time. Furthermore, Swee Keat, who made the infamous comments above, scored just 53.41% in East Coast.
Yes, I know I’m ignoring a lot of other factors that influenced these results. But don’t these results show conclusively that Heng’s comments were wrong? We have an Indian leading both the current and future PM in both elections, but yet PAP still feels the need to say that Singapore “hasn’t arrived” at a stage where we can vote without race in mind. In fact, this was the same rationale that supposedly led to the reserved presidency as mentioned in my earlier point.
The swing voters have spoken, and it is exceedingly clear to me that the electorate does not care what our highest office-holders are in terms of race, whether it be the PM or the President. Our Singapore pledge firmly states “regardless of race”, and I think the results have shown that we as a people have taken it to heart. But has the PAP?
6. Voters will not be so easily manipulated.
On one hand, Singaporeans were exhorted to stay home during the Covid-19 pandemic. Contact tracing became mandatory, and groups of more than 5 are prohibited.
But on the other hand, we are also told that it’s absolutely necessary to hold an election during this same period, for Singaporeans to wait in long lines and in close proximity to each other as we congregate to cast our vote, all because the PAP needs a strong mandate.
On one hand, Heng Swee Keat lambasted the Worker’s Party, claiming that it was “playing games with voters” over their refusal to confirm if they would accept NCMP seats.
But on the other hand, Heng Swee Keat was moved to the East Coast GRC at the eleventh hour in a surprise move to secure the constituency. (As mentioned above, he was aptly rewarded for this with a razor-thin margin of just 53.41% of the votes.)
On one hand, Masagos Zulkifli, PAP Vice-Chairman stated that “candidates should not be defined by a single moment in time or in their career, but judged instead by their growth throughout their life”. He said this in defense of Ivan Lim, who appears to be the very first candidate in Singaporean politics to have been pushed into retracting his candidacy by the power of non-mainstream media.
But on the other hand, the PAP called on the WP to make clear its stand on Raeesah Khan, a WP candidate who ran (and won) in Sengkang GRC for this election, stating that the Police investigation into Raeesah’s comments made on social media was “a serious matter which goes to the fundamental principles on which our country has been built”.
On one hand, Chan Chun Sing stated in 2015, referring to SingFirst’s policies about giving allowances to the young and the elderly, “Some of them promised you $300 per month. I say, please don’t insult my residents. You think…. they are here to be bribed?”
On the other hand, the PAP Government has just given out several handouts under its many budgets to help Singaporeans cope with the Covid-19 situation. [To be clear, I totally approve of these handouts. What I don’t approve is that the PAP felt the need to lambast similar policies as bribery in the past. Comparing a policy with a crime is a political low blow in my book.]
I could go on, but I think I’ve made my point. And so did the electorate in this election, putting their vote where it counted to show their disdain for the heavy-handedness and double standards that the PAP has displayed for this election.
Conclusion
I don’t say the above to put down the PAP. The PAP would have you believe that to not support them is equivalent to not wanting what’s best for Singapore. This is a false dichotomy that must be stamped out, and I am glad to see our swing voters taking a real stand with this election.
No, I say the above as a harsh but ultimately supportive letter to the PAP. As everyone can see from the results, we all still firmly believe that the PAP should be the Government. We still have faith that PAP has the leadership to take us forward and out of the Covid-19 crisis.
But we also want to send the PAP a strong signal with this vote, to bring them down from their ivory towers and down to the ground. Enough with the double standards. Enough with the heavy-handedness. Singaporeans have clearly stated their desire for a more mature democracy, and that means more alternative voices in Parliament. The PAP needs to stop acting as the father who knows it all, and to start acting as the bigger brother who can work hand in hand with his alternative younger brother towards what’s best for the entire family: Singapore.
There is a real chance that the PAP will not listen, though. As Lee Hsien Loong admitted in a rally in 2006, “if there are 10, 20… opposition members in Parliament… I have to spent my time thinking what is the right way to fix them”.
Now, the PAP has POFMA at its disposal. It still has the supermajority in Parliament, making them able to change any law in Singapore, even the Constitution at will. We have already seen them put these tools to use for its own benefit. Let us see if the PAP will continue as it has always done, or will it take this opportunity to change itself for the better. Whatever the case, we will be watching, and we will be waiting to make our roar heard once again five years down the road.
Majulah Singapura!
Article Ends Here.
Here's the link to the actual article:
https://thethoughtexperiment.org/2020/07/11/ge2020-the-roar-of-the-swing-vote
And here's the link to the other political articles I've written about Singapore:
https://thethoughtexperiment.org/2020/07/07/ge2020-the-state-of-play/
https://thethoughtexperiment.org/2015/09/10/ge2015-voting-wisely/
https://thethoughtexperiment.org/2015/09/05/expectations-of-the-opposition/
submitted by sharingan87 to singapore [link] [comments]

Step-by-Step Guide for Adding a Stack, Expanding Control Lines, and Building an Assembler

After the positive response to my first tutorial on expanding the RAM, I thought I'd continue the fun by expanding the capabilities of Ben's 8-bit CPU even further. That said, you'll need to have done the work in the previous post to be able to do this. You can get a sense for what we'll do in this Imgur gallery.
In this tutorial, we'll balance software and hardware improvements to make this a pretty capable machine:

Parts List

To only update the hardware, you'll need:
If you want to update the toolchain, you'll need:
  1. Arduino Mega 2560 (Amazon) to create the programmer.
  2. Ribbon Jumper Cables (Amazon) to connect the Arduino to the breadboard.
  3. TL866 II Plus EEPROM Programmer (Amazon) to program the ROM.
Bonus Clock Improvement: One additional thing I did is replace the 74LS04 inverter in Ben's clock circuit with a 74LS14 inverting Schmitt trigger (datasheet, Jameco). The pinouts are identical! Just drop it in, wire the existing lines, and then run the clock output through it twice (since it's inverting) to get a squeaky clean clock signal. Useful if you want to go even faster with the CPU.

Step 1: Program with an Arduino and Assembler (Image 1, Image 2)

There's a certain delight in the physical programming of a computer with switches. This is how Bill Gates and Paul Allen famously programmed the Altair 8800 and started Microsoft. But at some point, the hardware becomes limited by how effectively you can input the software. After upgrading the RAM, I quickly felt constrained by how long it took to program everything.
You can continue to program the computer physically if you want and even after upgrading that option is still available, so this step is optional. There's probably many ways to approach the programming, but this way felt simple and in the spirit of the build. We'll use an Arduino Mega 2560, like the one in Ben's 6502 build, to program the RAM. We'll start with a homemade assembler then switch to something more robust.
Preparing the Physical Interface
The first thing to do is prepare the CPU to be programmed by the Arduino. We already did the hard work on this in the RAM upgrade tutorial by using the bus to write to the RAM and disconnecting the control ROM while in program mode. Now we just need to route the appropriate lines to a convenient spot on the board to plug the Arduino into.
  1. This is optional, but I rewired all the DIP switches to have ground on one side, rather than alternating sides like Ben's build. This just makes it easier to route wires.
  2. Wire the 8 address lines from the DIP switch, connecting the side opposite to ground (the one going to the chips) to a convenient point on the board. I put them on the far left, next to the address LEDs and above the write button circuit.
  3. Wire the 8 data lines from the DIP switch, connecting the side opposite to ground (the one going to the chips) directly below the address lines. Make sure they're separated by the gutter so they're not connected.
  4. Wire a line from the write button to your input area. You want to connect the side of the button that's not connected to ground (the one going to the chip).
So now you have one convenient spot with 8 address lines, 8 data lines, and a write line. If you want to get fancy, you can wire them into some kind of connector, but I found that ribbon jumper cables work nicely and keep things tidy.
The way we'll program the RAM is to enter program mode and set all the DIP switches to the high position (e.g., 11111111). Since the switches are upside-down, this means they'll all be disconnected and not driving to ground. The address and write lines will simply be floating and the data lines will be weakly pulled up by 1k resistors. Either way, the Arduino can now drive the signals going into the chips using its outputs.
Creating the Arduino Programmer
Now that we can interface with an Arduino, we need to write some software. If you follow Ben's 6502 video, you'll have all the knowledge you need to get this working. If you want some hints and code, see below (source code):
  1. Create arrays for your data and address lines. For example: const char ADDRESS_LINES[] = {39, 41, 43, 45, 47, 49, 51, 53};. Create your write line with #define RAM_WRITE 3.
  2. Create functions to enable and disable your address and data lines. You want to enable them before writing. Make sure to disable them afterward so that you can still manually program using DIP switches without disconnecting the Arduino. The code looks like this (just change INPUT to OUTPUT accordingly): for(int n = 0; n < 8; n += 1) { pinMode(ADDRESS_LINES[n], OUTPUT); }
  3. Create a function to write to an address. It'll look like void writeData(byte writeAddress, byte writeData) and basically use two loops, one for address and one for data, followed by toggling the write.
  4. Create a char array that contains your program and data. You can use #define to create opcodes like #define LDA 0x01.
  5. In your main function, loop through the program array and send it through writeData.
With this setup, you can now load multi-line programs in a fraction of a second! This can really come in handy with debugging by stress testing your CPU with software. Make sure to test your setup with existing programs you know run reliably. Now that you have your basic setup working, you can add 8 additional lines to read the bus and expand the program to let you read memory locations or even monitor the running of your CPU.
Making an Assembler
The above will serve us well but it's missing a key feature: labels. Labels are invaluable in assembly because they're so versatile. Jumps, subroutines, variables all use labels. The problem is that labels require parsing. Parsing is a fun project on the road to a compiler but not something I wanted to delve into right now--if you're interested, you can learn about Flex and Bison. Instead, I found a custom assembler that lets you define your CPU's instruction set and it'll do everything else for you. Let's get it setup:
  1. If you're on Windows, you can use the pre-built binaries. Otherwise, you'll need to install Rust and compile via cargo build.
  2. Create a file called 8bit.cpu and define your CPU instructions (source code). For example, LDA would be lda {address} -> 0x01 @ address[7:0]. What's cool is you can also now create the instruction's immediate variant instead of having to call it LDI: lda #{value} -> 0x05 @ value[7:0].
  3. You can now write assembly by adding #include "8bit.cpu" to the top of your code. There's a lot of neat features so make sure to read the documentation!
  4. Once you've written some assembly, you can generate the machine code using ./customasm yourprogram.s -f hexc -p. This prints out a char array just like our Arduino program used!
  5. Copy the char array into your Arduino program and send it to your CPU.
At this stage, you can start creating some pretty complex programs with ease. I would definitely play around with writing some larger programs. I actually found a bug in my hardware that was hidden for a while because my programs were never very complex!

Step 2: Expand the Control Lines (Image)

Before we can expand the CPU any further, we have to address the fact we're running out of control lines. An easy way to do this is to add a 3rd 28C16 ROM and be on your way. If you want something a little more involved but satisfying, read on.
Right now the control lines are one hot encoded. This means that if you have 4 lines, you can encode 4 states. But we know that a 4-bit binary number can encode 16 states. We'll use this principle via 74LS138 decoders, just like Ben used for the step counter.
Choosing the Control Line Combinations
Everything comes with trade-offs. In the case of combining control lines, it means the two control lines we choose to combine can never be activated at the same time. We can ensure this by encoding all the inputs together in the first 74LS138 and all the outputs together in a second 74LS138. We'll keep the remaining control lines directly connected.
Rewiring the Control Lines
If your build is anything like mine, the control lines are a bit of a mess. You'll need to be careful when rewiring to ensure it all comes back together correctly. Let's get to it:
  1. Place the two 74LS138 decoders on the far right side of the breadboard with the ROMs. Connect them to power and ground.
  2. You'll likely run out of inverters, so place a 74LS04 on the breadboard above your decoders. Connect it to power and ground.
  3. Carefully take your inputs (MI, RI, II, AI, BI, J) and wire them to the outputs of the left 74LS138. Do not wire anything to O0 because that's activated by 000 which won't work for us!
  4. Carefully take your outputs (RO, CO, AO, EO) and wire them to the outputs of the right 74LS138. Remember, do not wire anything to O0!
  5. Now, the 74LS138 outputs are active low, but the ROM outputs were active high. This means you need to swap the wiring on all your existing 74LS04 inverters for the LEDs and control lines to work. Make sure you track which control lines are supposed to be active high vs. active low!
  6. Wire E3 to power and E2 to ground. Connect the E1 on both 138s together, then connect it to the same line as OE on your ROMs. This will ensure that the outputs are disabled when you're in program mode. You can actually take off the 1k pull-up resistors from the previous tutorial at this stage, because the 138s actively drive the lines going to the 74LS04 inverters rather than floating like the ROMs.
At this point, you really need to ensure that the massive rewiring job was successful. Connect 3 jumper wires to A0-A2 and test all the combinations manually. Make sure the correct LED lights up and check with a multimeteoscilloscope that you're getting the right signal at each chip. Catching mistakes at this point will save you a lot of headaches! Now that everything is working, let's finish up:
  1. Connect A0-A2 of the left 74LS138 to the left ROM's A0-A2.
  2. Connect A0-A2 of the right 74LS138 to the right ROM's A0-A2.
  3. Distribute the rest of the control signals across the two ROMs.
Changing the ROM Code
This part is easy. We just need to update all of our #define with the new addresses and program the ROMs again. For clarity that we're not using one-hot encoding anymore, I recommend using hex instead of binary. So instead of #define MI 0b0000000100000000, we can use #define MI 0x0100, #define RI 0x0200, and so on.
Testing
Expanding the control lines required physically rewiring a lot of critical stuff, so small mistakes can creep up and make mysterious errors down the road. Write a program that activates each control line at least once and make sure it works properly! With your assembler and Arduino programmer, this should be trivial.
Bonus: Adding B Register Output
With the additional control lines, don't forget you can now add a BO signal easily which lets you fully use the B register.

Step 3: Add a Stack (Image 1, Image 2)

Adding a stack significantly expands the capability of the CPU. It enables subroutines, recursion, and handling interrupts (with some additional logic). We'll create our stack with an 8-bit stack pointer hard-coded from $0100 to $01FF, just like the 6502.
Wiring up the Stack Pointer
A stack pointer is conceptually similar to a program counter. It stores an address, you can read it and write to it, and it increments. The only difference between a stack pointer and a program counter is that the stack pointer must also decrement. To create our stack pointer, we'll use two 74LS193 4-bit up/down binary counters:
  1. Place a 74LS00 NAND gate, 74LS245 transceiver, and two 74LS193 counters in a row next to your output register. Wire up power and ground.
  2. Wire the the Carry output of the right 193 to the Count Up input of the left 193. Do the same for the Borrow output and Count Down input.
  3. Connect the Clear input between the two 193s and with an active high reset line. The B register has one you can use on its 74LS173s.
  4. Connect the Load input between the two 193s and to a new active low control line called SI on your 74LS138 decoder.
  5. Connect the QA-QD outputs of the lower counter to A8-A5 and the upper counter to A4-A1. Pay special attention because the output are in a weird order (BACD) and you want to make sure the lower A is connected to A8 and the upper A is connected to A4.
  6. Connect the A-D inputs of the lower counter to B8-B5 and the upper counter to B4-B1. Again, the inputs are in a weird order and on both sides of the chip so pay special attention.
  7. Connect the B1-B8 outputs of the 74LS245 transceiver to the bus.
  8. On the 74LS245 transceiver, connect DIR to power (high) and connect OE to a new active low control line called SO on your 74LS138 decoder.
  9. Add 8 LEDs and resistors to the lower part of the 74LS245 transceiver (A1-A8) so you can see what's going on with the stack pointer.
Enabling Increment & Decrement
We've now connected everything but the Count Up and Count Down inputs. The way the 74LS193 works is that if nothing is counting, both inputs are high. If you want to increment, you keep Count Down high and pulse Count Up. To decrement, you do the opposite. We'll use a 74LS00 NAND gate for this:
  1. Take the clock from the 74LS08 AND gate and make it an input into two different NAND gates on the 74LS00.
  2. Take the output from one NAND gate and wire it to the Count Up input on the lower 74LS193 counter. Take the other output and wire it to the Count Down input.
  3. Wire up a new active high control line called SP from your ROM to the NAND gate going into Count Up.
  4. Wire up a new active high control line called SM from your ROM to the NAND gate going into Count Down.
At this point, everything should be working. Your counter should be able to reset, input a value, output a value, and increment/decrement. But the issue is it'll be writing to $0000 to $00FF in the RAM! Let's fix that.
Accessing Higher Memory Addresses
We need the stack to be in a different place in memory than our regular program. The problem is, we only have an 8-bit bus, so how do we tell the RAM we want a higher address? We'll use a special control line to do this:
  1. Wire up an active high line called SA from the 28C16 ROM to A8 on the Cypress CY7C199 RAM.
  2. Add an LED and resistor so you can see when the stack is active.
That's it! Now, whenever we need the stack we can use a combination of the control line and stack pointer to access $0100 to $01FF.
Updating the Instruction Set
All that's left now is to create some instructions that utilize the stack. We'll need to settle some conventions before we begin:
If you want to add a little personal flair to your design, you can change the convention fairly easily. Let's implement push and pop (source code):
  1. Define all your new control lines, such as #define SI 0x0700 and #define SO 0x0005.
  2. Create two new instructions: PSH (1011) and POP (1100).
  3. PSH starts the same as any other for the first two steps: MI|CO and RO|II|CE. The next step is to put the contents of the stack pointer into the address register via MI|SO|SA. Recall that SA is the special control line that tells the memory to access the $01XX bank rather than $00XX.
  4. We then take the contents of AO and write it into the RAM. We can also increment the stack pointer at this stage. All of this is done via: AO|RI|SP|SA, followed by TR.
  5. POP is pretty similar. Start off with MI|CO and RO|II|CE. We then need to take a cycle and decrement the stack pointer with SM. Like with PSH, we then set the address register with MI|SO|SA.
  6. We now just need to output the RAM into our A register with RO|AI|SA and then end the instruction with TR.
  7. Updating the assembler is easy since neither instruction has operands. For example, push is just psh -> 0x0B.
And that's it! Write some programs that take advantage of your new 256 byte stack to make sure everything works as expected.

Step 4: Add Subroutine Instructions (Image)

The last step to complete our stack is to add subroutine instructions. This allows us to write complex programs and paves the way for things like interrupt handling.
Subroutines are like a blend of push/pop instructions and a jump. Basically, when you want to call a subroutine, you save your spot in the program by pushing the program counter onto the stack, then jumping to the subroutine's location in memory. When you're done with the subroutine, you simply pop the program counter value from the stack and jump back into it.
We'll follow 6502 conventions and only save and restore the program counter for subroutines. Other CPUs may choose to save more state, but it's generally left up to the programmer to ensure they're not wiping out states in their subroutines (e.g., push the A register at the start of your subroutine if you're messing with it and restore it before you leave).
Adding an Extra Opcode Line
I've started running low on opcodes at this point. Luckily, we still have two free address lines we can use. To enable 5-bit opcodes, simply wire up the 4Q output of your upper 74LS173 register to A7 of your 28C16 ROM (this assumes your opcodes are at A3-A6).
Updating the ROM Writer
At this point, you simply need to update the Arduino writer to support 32 instructions vs. the current 16. So, for example, UCODE_TEMPLATE[16][8] becomes UCODE_TEMPLATE[32][8] and you fill in the 16 new array elements with nop. The problem is that the Arduino only has so much memory and with the way Ben's code is written to support conditional jumps, it starts to get tight.
I bet the code can be re-written to handle this, but I had a TL866II Plus EEPROM programmer handy from the 6502 build and I felt it would be easier to start using that instead. Converting to a regular C program is really simple (source code):
  1. Copy all the #define, global const arrays (don't forget to expand them from 16 to 32), and void initUCode(). Add #include and #include to the top.
  2. In your traditional int main (void) C function, after initializing with initUCode(), make two arrays: char ucode_upper[2048] and char ucode_lower[2048].
  3. Take your existing loop code that loops through all addresses: for (int address = 0; address < 2048; address++).
  4. Modify instruction to be 5-bit with int instruction = (address & 0b00011111000) >> 3;.
  5. When writing, just write to the arrays like so: ucode_lower[address] = ucode[flags][instruction][step]; and ucode_upper[address] = ucode[flags][instruction][step] >> 8;.
  6. Open a new file with FILE *f = fopen("rom_upper.hex", "wb");, write to it with fwrite(ucode_upper, sizeof(char), sizeof(ucode_upper), f); and close it with fclose(f);. Repeat this with the lower ROM too.
  7. Compile your code using gcc (you can use any C compiler), like so: gcc -Wall makerom.c -o makerom.
Running your program will spit out two binary files with the full contents of each ROM. Writing the file via the TL866II Plus requires minipro and the following command: minipro -p CAT28C16A -w rom_upper.hex.
Adding Subroutine Instructions
At this point, I cleaned up my instruction set layout a bit. I made psh and pop 1000 and 1001, respectively. I then created two new instructions: jsr and rts. These allow us to jump to a subroutine and returns from a subroutine. They're relatively simple:
  1. For jsr, the first three steps are the same as psh: MI|CO, RO|II|CE, MI|SO|SA.
  2. On the next step, instead of AO we use CO to save the program counter to the stack: CO|RI|SP|SA.
  3. We then essentially read the 2nd byte to do a jump and terminate: MI|CO, RO|J.
  4. For rts, the first four steps are the same as pop: MI|CO, RO|II|CE, SM, MI|SO|SA.
  5. On the next step, instead of AI we use J to load the program counter with the contents in stack: RO|J|SA.
  6. We're not done! If we just left this as-is, we'd jump to the 2nd byte of jsr which is not an opcode, but a memory address. All hell would break loose! We need to add a CE step to increment the program counter and then terminate.
Once you update the ROM, you should have fully functioning subroutines with 5-bit opcodes. One great way to test them is to create a recursive program to calculate something--just don't go too deep or you'll end up with a stack overflow!

Conclusion

And that's it! Another successful upgrade of your 8-bit CPU. You now have a very capable machine and toolchain. At this point I would have a bunch of fun with the software aspects. In terms of hardware, there's a number of ways to go from here:
  1. Interrupts. Interrupts are just special subroutines triggered by an external line. You can make one similar to how Ben did conditional jumps. The only added complexity is the need to load/save the flags register since an interrupt can happen at any time and you don't want to destroy the state. Given this would take more than 8 steps, you'd also need to add another line for the step counter (see below).
  2. ROM expansion. At this point, address lines on the ROM are getting tight which limits any expansion possibilities. With the new approach to ROM programming, it's trivial to switch out the 28C16 for the 28C256 that Ben uses in the 6502. These give you 4 additional address lines for flags/interrupts, opcodes, and steps.
  3. LCD output. At this point, adding a 16x2 character LCD like Ben uses in the 6502 is very possible.
  4. Segment/bank register. It's essentially a 2nd memory address register that lets you access 256-byte segments/banks of RAM using bank switching. This lets you take full advantage of the 32K of RAM in the Cypress chip.
  5. Fast increment instructions. Add these to registers by replacing 74LS173s with 74LS193s, allowing you to more quickly increment without going through the ALU. This is used to speed up loops and array operations.
submitted by MironV to beneater [link] [comments]

Classified: Compiled Intelligence On the Lost Dolls Reclaimer Faction (OC Reclaimer Faction)

Condensed intelligence overview detailing currently known information on the Reclaimer faction known as ‘Lost Dolls.’ Information contained therein has been compiled by Sky Union Intelligence Officer ‘MB.’
Sources consist largely of Sky Union’s own records, as well as shared intelligence reports on the matter, compiled battle data, and found footage shared by Orbital. MB was also able to covertly interview the pilot ‘Port’ directly, though it’s believed that she understood the general purpose of MB’s questioning, and so her testimony must be accepted with a degree of scrutiny.
OVERVIEW
Unit Name: Lost Dolls
“Bringing you the bleeding edge of technology from thirty years ago, today. Let’s get started.”
-MB, initial debriefing.
Time of Operation: Officially, only four hundred and seventy three days. Compiled intelligence suggests that the group has been active in the Oval Link for far longer, with upward estimates reaching as high as twenty years. At the very least, all members were alive at the time of the Moonfall.
Pilots: Five
Affiliations: No known Consortium ties. Joint operations alongside other Reclaimer factions are uncommon, though Steel Knights show up most often with Bullet Works and Immortal Innocence tied for a distant second.
Preferred Mission Profile: Lost Dolls’ mission profile trends toward humanitarian missions. Primarily defensive or retributive actions against Corrupted A.I. incursions, particularly those concerning civilian populations within the Oval Link. It’s generally accepted that this is one of the primary factors contributing to their work alongside Steel Knights.
They are less likely than average to pursue high-risk, high-payout missions such as deep-dives into A.I. territory or the escort of VIPs, such as political or military personnel, out of high risk areas. Conversely, they are more likely to take on high-risk missions with lower pay, such as escorting civilian evacuation caravans in the event of a Corrupted A.I. incursion. This behavior matches with the Dolls’ preference for humanitarian work, as missions fitting these criteria tend to be posted by lower level governmental officials, or even civilians with pooled resources, who have come under sudden attack.
Quirks: All five pilots typically show to missions, in violation of the four-per-squad standard. Normally this would be in violation of the Consortium Treaty, but so far Orbital has refused to take action. It is theorized that this is due to the Dolls’ reluctance to hit military targets, and that Orbital may be letting the behavior slide in the interest of protecting civilian lives.
The Dolls have no known home base. Port has made reference to a ‘bus’ in interviews that she says they use for field repair and transportation; it’s possible she’s referring to an old rapid deployment Arsenal carrier like the ones that were used before the Consortiums established proper infrastructure in the Oval Link, but it’s hard to say where a group like the Dolls could have found an operational one, much less one capable of fielding five arsenals. It’s almost more likely that they actually have two, puttering somewhere around the Neutral Zone. Even that’s a hard pill to swallow, since the old carriers have been out of production for almost thirty years now.
Very little of the Dolls’ equipment is up-to-date. Their plugsuits are all defunct prototype models and in varying states of disrepair; most of their pilots don’t even use the actual connections in the suits themselves, opting instead for permanent ports connecting directly to their nervous systems. I’ve never seen any of them sporting a Blitz, either. At least one, Port, has been observed with what appears to be a traditional slug-throwing sidearm.
The Lost Dolls claim to be a family unit of five sisters. The physical differences between them would imply that this is in a purely symbolic manner (excepting Protoca and Hope. Possibly Port if our facial analysis data is reliable), but the effect is the same. Their loyalty to each other is hard to call into question.
Every one of their pilots has had their age frozen by Outer Syndrome.
It should be noted that all pilots, excepting Earwax, have pilot rankings that do not properly reflect their overall level of competency. The Dolls’ propensity for low-sensitivity missions and unwillingness to work closely to further any Consortium goals aside from preservation of human life has left them low on the leaderboard. In cases where this information is used for planning operations against or alongside the Lost Dolls, assume all pilots are at the level of A rank or higher.
PILOTS/MECHS
“I’ll start off with saying that the Dolls have the most ‘ware I’ve ever seen packed into a unit of this size. Two pilots are almost entirely cybernetic. And I do mean entirely.”
-MB
Callsign: Tachi
Real Name: Tachi Hanamura
Age: Unknown. Appears to be in her late teens.
Height: 197cm outside of Arsenal, 76cm while embarked, 167cm when utilizing her ‘emergency legs.’
Rank: C
Handed: Both
Family: Four sisters
Outer Ability: Unknown. Though she is remarkably receptive to cybernetic augmentations and displays an unusual level of synchronicity with her Arsenal, hovering at anywhere between 91% and 95% at any time.
Piloting Tendences: Aggressive. Highly aggressive. Tachi’s typical M.O. involves charging directly into an enemy formation and smashing the thing to bits before moving onto the next cluster. She often acts as the Dolls’ line breaker and attack dog, flushing high priority targets out of the press or just bowling down the chaff so that the other pilots can focus on more important things.
“The armor is 600mm of over a dozen different laminates and they didn’t include a single thermal dispersion layer for laser fire...”
-Tachi, picking over the husk of a disabled Genbu
Physical Description: Where to start? First, brown hair, cropped into a messy bowl cut. Wide build for a girl. Her entire right arm is cybernetic. Her torso ends above her hips, which have been replaced by a massive version of the nerve-interface hubs found on standard plugsuits. Outside of her Arsenal this is plugged into the top of a massive set of ‘spider legs,’ complete with abdomen, which she uses as her normal mode of transport. When embarked on a mission, she’s lifted off her leg hub and simply plugged into a custom seat in her Arsenal, with a secondary connection at the base of her neck; the normal shoulder connections aren’t used.
The arm and leg hub don’t match any known manufacturer of prosthetics, and the connection format at her hip is dated by at least a full twenty years. A pair of more modern legs are integrated into her piloting seat and act as part of her ejection system should her Arsenal be put out of commission in the middle of combat.
She has a set of rocket thrusters implanted into her back. Actual rocket thrusters; the vents are mostly flush with her shoulder blades, protruding perhaps 5-6cm. Footage loaned from Orbital demonstrates her leaping almost one hundred meters utilizing them while under full load (read: attached to the massive spider leg assembly). Using her Arsenal ejection system, combined with the lighter weight of her backup legs, it’s estimated she could travel as far as three hundred meters on a burst from the thrusters.
Arsenal: Arachne
Weapon Compliment:
Arsenal Characteristics: Beat half to death and heavy.
Arachne’s one of the two Arsenals in the Dolls’ employ that we have a decent technical read on, mostly because Tachi’s a shameless showboat and likes to show off all the tinkering she’s done on the thing. A decent example of the Dolls’ construction strategy, no two armor components on Arachne are from the same model. The left arm is optimized for melee strikes (both the base model, and the aftermarket modifications that have been made by the pilot) while the right is oriented for handling firearms. The unit is sluggish in the air and has middling mobility on foot for it’s durability; fine enough for Tachi’s preferred method of brawling. Combat footage shows she’s the type of pilot that tries to stay grounded anyway.
Tachi’s normal plan of attack is to get in close and personal with the Raven II and Ohabari and shred whatever’s in front of her. The Reaper II is typically reserved for plinking Strais or aerial targets that have gotten spread out. The Agni Flame appears to be used purely as backup.
Frankly, the Reaper II and Ogre Break II are squandered here. With a maximum lock range of only two hundred and one meters, Arachne is right on the edge of it’s rangeband with the Reaper and hopelessly short of the Ogre. That hasn’t stopped the pilot from eyeballing slower moving AI from farther out, but the Arsenal really shows the slapdash nature of the pilot.
“She doesn’t stop. Not for anything. While pouring over the combat footage I actually stumbled onto a sequence where she took a Failnaught round right through the cockpit and all it did was make her angry.”
-MB.
Callsign: Protoca
Real Name: Protoca [no known surname]
Age: Unknown. Appears to be in her late teens.
Height: 182cm
Rank: B
Handed: Left
Family: Four sisters
Outer Ability: Rapid regeneration from injuries, as well as being prone to physical mutation. She can apparently recover from injuries that even most Outers would find lethal; we have combat footage of an ejected Protoca taking a cannon round to the legs, obliterating everything from her hips downward. I met her face-to-face in my interview with Port and she had made a full recovery, complete with a set of genuine flesh and blood legs. You wouldn’t even know it’d happened.
Her mutations appear to be a side-effect of her regeneration, and do not directly benefit her while piloting outside of her absurd physical strength and enhanced reflexes.
Piloting Tendencies: Measured and deliberate, but outrageously dogged. She keeps a wide engagement profile and usually plays mop-up alongside Port when dealing with traditional corrupted AI forces, otherwise she’s running interference when facing off against Arsenals. She’s particularly skilled at close urban combat and swaps between playing rifleman and melee roles fluidly. She also rarely retreats from engagement, regardless of the tactical situation. On at least one occasion, her Arsenal was reduced down to it’s torso, head, and one leg in an engagement with a hostile Arsenal pilot. Instead of withdrawing, Protoca engaged afterburners and tackled her opponent, which bought enough time for Lost Dolls’ other pilots to reach her position and disable the enemy.
Generally speaking, it seems she simply will not withdraw from an engagement unless one of the other pilots is under direct threat or Port herself calls for an immediate withdrawal.
“You don’t take one step further. Not one.”
-Protoca, staring down three fresh Strais after dispatching their forward wing.
Physical Description: A real mess. For the basics; brown hair, trimmed into an angled bob cut. She’s wide shouldered, but nowhere near as broad as Tachi. Her torso and leg profiles are slim, arguably emaciated. Musculature is extremely visible, as if she’s constantly tensing her entire body with every movement. It’s possible that’s the case, as her movement patterns have a habit of being twitchy and erratic.
As for the aforementioned mutations: her right leg is covered in dark, hard scales. An atrophied wing, like that of a bat, shares a dual joint at the shoulder with her right arm. Numerous scars, some clearly surgical in nature. There’s a kind of plant-like symbiont that wraps around her left arm, up her neck, and ends in her hair, sprouting into a pair of green, bioluminescent flowers; it’s unclear if this is a mutation to her person or if it’s a separate entity.
A note about the wing and scales: they’re proofed against small arms. How Protoca’s body is able to produce organic compounds capable of standing up to Femto weaponry is currently a subject of heated debate in R&D’s breakroom. I’m sure more than a few whiteboards have been broken over it, considering how loud they get.
Arsenal: One More
Weapon Compliment:
  • OAW-P54 Aegis
  • OAW-BL74 Cronus Break
  • SAW-RP90F Splendor
  • HAW-CF22 Chaff Flare
  • HAW-R26F Guilty Throne
  • HAW-L05F Stargazer
Arsenal Characteristics: One More is the type of Arsenal you could smack upside the head with a Buster Doom and it would ask for seconds.
True, it doesn’t have the bulk of a true heavy-weight, but the chassis itself is strong enough to take a hit and keep on coming and the Splendor repair system means the Arsenal has fantastic staying power over the course of an extended engagement. And the Aegis shield in the off-hand gifts the pilot considerable bulk in the context of a contained duel.
Like Arachne, One More has a lopsided chassis with a horrendously overengineered sword arm while the other is optimized for handling firearms. Unlike Arachne, One More has access to a far more advanced set of weaponry. Between the Guilty Throne, Aegis, Cronus Break, and Stargazer, Protoca is running a veritable buffet of high performance, low availability equipment. The manufacturers of the Cronus Break and Aegis models aren’t even public knowledge, so it’s an open question where the Dolls could have procured such serious tech with their relatively bare income and (reportedly) spartan operational facilities.
Operationally, One More often acts as the anvil to Port and Tachi’s hammer; a hard to remove obstacle for any conventional AI force and a dogged pursuer for most arsenal-based forces.
“The team’s tactical leader and designated marksman. Methodical, cordial, and a complete horror show like all the others.”
-MB
Callsign: Port
Real Name: Samantha Thampson
Age: Unknown. Appears to be in her late teens.
Height: 167cm
Rank: B
Handed: Left
Family: Four sisters.
Outer Ability: Port’s brain is innately capable of understanding binary code which allows her unparalleled levels of synchronicity with her Arsenal, fluctuating between 99%-100%. It also allows her to eschew the traditional connecting ports in her plug suit (which is good, because they’re all visibly broken) and instead opt for a surgically installed plug that connects directly to her brain stem. Connected this way, her Arsenal effectively becomes an extension of her physical body.
This ability also extends to binary converted into other formats other than a direct electrical feed; Port has often been caught having verbal, and apparently quite in-depth, conversations with the AI unit of her Arsenal via the unit’s external audio systems, with bursts of static standing in for the unit's speech. How coherent/intelligent this ‘dialogue’ from the unit is still up in the air, but analysis of the few samples we do have shows definite patterns in the unit’s ‘speech’ and in how it reacts to Port herself.
Piloting Tendencies: Port’s preferred method of engagement appears to be skirmishing at distance; she fits the rifleman archetype to a T. Unlike Protoca, Tachi, and Lily, Port has no measures for melee combat installed on her Arsenal aside from its fists, and even the one shotgun she keeps on the rear pylons is a choked down, longer range model.
Her usual M.O. when deployed amongst her sisters is to hang back behind Tachi or Protoca and plink. Well, ‘plink.’ The DMR and high performance assault rifle she’s managed to scrounge out of the Neutral Zone could blow through a Rebellion’s kneecap with sustained fire, and her sisters are good at giving her the required openings. While going over the combat footage, I saw her put a round down the barrel of a Slay Dog more than once.
“Oh, we’re just a merry little band of misfits, Sergeant. Looking out for each other, trying to make the world a better place. I’m sure you’ve heard the old song and dance.”
-Port, early in her interview with Intelligence Officer MB.
Physical Description: The most immediately striking thing about Port is arguably her albinism; snow white from head to toe except for her eyes, which are pink from lack of pigment. After that might be the fact that she’s a quadruple amputee with a full suite of military grade replacement limbs (or rather, Port claims that they’re military grade). The hardware itself appears very dated, to the point where our intelligence teams have not actually been able to pinpoint a make or model. Aside from being old, they’re clearly several sizes too large for her. Approximating by their overall scale, we estimate they’re intended for an 180cm adult male. The size difference is exaggerated somewhat by the fact that her legs have actually been installed too low, connecting part way down her thighs rather than at the hip. The limbs themselves don’t appear to be anything special; the arms are conventional replacement limbs with a fully articulated wrist, hand, and fingers while the legs are set up for sprinting, the feet having been replaced with a flexible running fin. The legs also boast a pneumatic jumping apparatus on par with modern Outer modifications.
Port has also undergone extensive cranial modifications, some of which she claims she’s performed herself. These include a large radio antenna mounted behind her right ear and connected via ribbon cable to the base of her skull, a set of four high definition cameras implanted into the ridges of her cheekbones, a manually operated combat stimulant pump on the bottom left portion of her skull, and two white ‘dog ears’ surgically implanted over her ear canals (breed and origin undetermined; possibly vat grown and purchased off the black market).
Moving on from augmentations; Port herself is slightly built. Thin frame, long face, little visible muscle to speak of. Her torso is thin enough that it almost appears emaciated, though there’s some contention on whether this is actually due to nutritional deficit or rather a result of further augmentation or Outer Syndrome. She’s covered in scars and has permanent iris damage in her left eye.
Arsenal: B3-206 (though Port often shortens this to ‘Bee’)
Weapon Compliment:
  • SAW-SR53 Beluga Beam
  • Agni Flame M
  • HAW-R26F Guilty Throne
  • HAW-SH35 Hoggish Spriggan
  • HAW-AM01L Scarlet Star
And a reserve magazine for an expanded ammunition compliment.
Arsenal Characteristics: A solid, all around trooper unit.
B3-206 excels in the roles of medium range fire support and skirmisher. Between the Beluga Beam and Scarlet Star, B3-206 has excellent firepower at range to harass hostile targets while the Guilty Throne and M model Agni Flame offer solid mid-range options for when the fighting gets in a little closer. Port appears to keep the Spriggan on hand as a sidearm more than anything else, usually only resorting to it once her other weapons have depleted their ammunition stores.
As for the Arsenal itself, B3-206 is very much a jack of all trades. Construction focuses on striking a balance between durability, maneuverability, and memory capacity with some minor sacrifices to overall firepower. Of particular note are the Arsenal’s arms, the make of which don’t appear in any of our internal records. Construction closely resembles the make of an old, defunct Zen prototype from over twenty years ago but declassified documents suggest that those never made it past the drawing board before the project was canceled; we’re currently doing some more thorough digging to try and figure out where Port may have picked them up but the current theory is that she found a fabricator on the black market who developed the design independently.
As mentioned previously, B3-206 is on recording having apparently complex conversations with Port via audibly broadcast binary noise. We don’t have enough data to synthesize a translation at this time, but the patterns are definite and subtle variations in the machine’s tone do closely mirror subtleties in human speech resulting from shifts in mood. Port herself has been cryptic on the subject but the implications of a sapient AI operating directly under Orbital authority are something the intelligence community is still exploring.
“Arguably the team’s ace pilot, she ties Port and Protoca combined for Arsenal downs. She lags behind in Corrupted AI kills but then, that isn’t her job.”
-MB
Callsign: Lily
Real Name: Liliana [no known surname]
Age: Unknown. Appears to be in her early teens.
Height: 160cm
Rank: A
Handed: Right
Family: Four sisters
Outer Ability: Instantaneous reaction time. She has a true reaction time of 0.00000000 seconds, meaning she is only limited by the inertia of her own body or Arsenal when maneuvering in combat. This has given rise to some truly hair-raising maneuvering from Lily, as she can change her plan of attack at any point for any reason as long as her Arsenal is capable of putting up with the mechanical stress.
Piloting Tendencies: Highly aggressive, arguably moreso than Tachi. Her ability to outthink and out-react even her own teammates mean that Lily is often extending far beyond them before they can even realize it. The good news for her is that the enemy won't realize it either; not until she's put two full magazines from her Silver Raven IIs right into their back, anyway.
“A real firecracker, this one. You wouldn’t guess by how quiet she is off the field.”
-MB
Physical Description: Short, slightly built (though not so much as Port), with the physicality one might expect of a professional dancer. Her hair is sandy brown and kept braided.
Like Port, Lily is highly augmented. Both her legs have been replaced with prosthetics and, like Port, the make and model are unknown. Visually, they resemble Outer-issue dedicated leaping prosthetics in that they taper sharply down to the feet which appear to be a pair of springloaded fins, not dissimilar to Port’s running fins. Her left arm has also been replaced with an arm of a similar make to Port’s, though it’s not identical. It’s detachable, with the shoulder socket doubling as Lily’s primary connection port while embarked in the Rabbit.
Also like Port, she has a pair of animal ears implanted into her head, though in this case they are in addition to her normal ones as opposed to replacing them; they’re a pair of large rabbit ears matching her hair color.
Some miscellaneous notes: Lily is completely mute. She communicates primarily through a form of one-handed sign language, heavily favoring her right hand. Per Port, all pilots in the unit are fluent enough to understand the broad strokes of whatever it is Lily is signing but only Tachi has put in the time to learn the language properly. Her and Lily will sometimes utilize it to have private conversations. In the field she gets by with a limited set of synthesized voice commands that Port has uploaded into a soundboard in her cockpit.
Lily is also quite near-sighted. A rare condition for an Outer, let alone an Arsenal pilot. She can commonly be found sporting a pair of cokebottle glasses when not in her Arsenal.
Arsenal: Red Rabbit
Weapon Compliment:
  • HAW-M05 Silver Raven II x 2
  • SAW-EB10 Prominence
  • SAW-EB10L Prominence
  • SAW-RP95 Devotion
  • HAW-CS09 Cooling System
Arsenal Characteristics: Red Rabbit is what most experienced Arsenal pilots would describe as ‘selfish.’
Even as part of a cohesive unit, Red Rabbit’s role typically involves acting alone, striking forward ahead of the advancing unit or around the opposition’s flank to pick out high priority targets before the enemy can properly react. Where Arachne’s application is as a blunt instrument, Red Rabbit is a dagger sinking into the enemy’s unguarded flank. Hot shots flock to these sorts of machines because it means they get to wrack up the killmarks, though Lily doesn't seem the type to keep score.
About every aspect of Red Rabbit’s handling characteristics have been redlined for the sake of keeping up with its daring pilot. It’s bleeding fast, turns on a dime, and is practically air-weight as far as Arsenals are concerned. This also means it’s exceptionally fragile but, with Lily at the helm, it’s rare for the Rabbit to incur significant battle damage at all.
A minor note: Red Rabbit is the only Arsenal in the unit to use an after-market body kit. This has made visually identifying the make and model essentially impossible. Femto expulsion readings and in-depth handling analyses have been carried out by our boys in the Intelligence office but I can only speculate as to their conclusion, as the particular details haven’t been cleared for my viewing. I hear it made some of the higher ups break into a cold sweat, for whatever that’s worth.
“Cute kid. Not really sure what she’s doing hanging out in a Reclaimer unit, shy as she is.”
-MB
Callsign: Earwax
Real Name: Hope [no known surname]
Age: Unknown. Her age was frozen while quite young; appears to be about nine or ten.
Height: 121cm
Rank: E
Handed: Right
Family: Four sisters
Outer Ability: Currently unknown. Port has hinted that she might have empathic capabilities.
Piloting Tendencies: Earwax is the team’s high altitude reconnaissance and communications expert. She spends every moment of flight time high over the battlefield, coordinating the other pilots and keeping a bird’s eye view of the battle. There is no known record of Earwax engaging in combat directly.
“Don’t call me that! Ugh. I asked Port not to make that my nickname . . .”
-Earwax apparently doesn’t like her callsign.
Physical Description: The spitting image of Protoca, if Protca were seven years younger and lacking mutations. Going theory in the intelligence circuit is that Earwax and Protoca are twins, with Earwax contracting Outer Syndrome at an earlier date than her sister. Sadly, at this stage all we have is conjecture.
Notable visual distinctions between the two, aside from height, mostly come down to personal style. Earwax wears her hair longer and is more likely to wear ornaments such as hair clips or bands. She is also the team’s only member to be commonly found in civilian clothing, with a penchant for ribbons and frilly dresses. All told, Earwax is almost aggressively ‘normal’ in contrast with the rest of her team, wholly lacking her sister’s enhanced musculature as well as any cybernetic augmentation.
Arsenal: Eden
Weapon Compliment: A single HAW-H05L Trickster and all the sensor equipment you can reasonably jam into the torso chassis.
Arsenal Characteristics: Eden is the Dolls’ high altitude recon and overwatch unit.
Just about every spare or redundant part has been pulled off the frame in favor of saving weight and increasing the maximum operational ceiling of the unit well beyond standard combat load parameters. As a result, Eden is capable of operating above an AO almost indefinitely, feeding the team’s other pilots a steady stream of intel while high and away from any real danger.
Frankly, there isn’t much more to say on the subject. Eden is so pared down that it’s barely more than a trainer unit with a bunch of sensors strapped to the hood. Which is good, because Hope has none of the typical neural implants that normally facilitate handling Arsenal movement, nor any secondary method of connection like most of her sisters. She flies almost purely by instruments.
There isn’t even much evidence to suggest she’s ever fired her Trickster, which is meant as a last resort defensive measure in case something gets by the defensive screen formed by the rest of the unit. There have been all of five occasions where her Arsenal was purposefully pursued by enemy contacts and, the three times they got away from Lily, said contacts burned their own engines out while trying to exceed their operational ceiling.
Closing Statement: The Lost Dolls represent a valuable asset in the fight against the Corrupted AI in that they are a reliable and high-uptime asset dedicated to safeguarding vulnerable towns and cities across the Oval Link. That said, they show no interest in working closely with any Consortium; at this time it is my estimation that we would only ever look to the Lost Dolls as a stabilizing measure in the event of a crisis, rather than a resource to exploit proactively.
If you made it this far, thanks for reading over my post. And thanks to u/Muteki_____ for translating DxM's supplementary materials and ultimately giving me the idea for this writeup.
I sure hope the formatting doesn't break.
submitted by o0m-9 to DaemonXMachina [link] [comments]

ABI Breaks: Not just about rebuilding

Related reading:
What is ABI, and What Should WG21 Do About It?
The Day The Standard Library Died

Q: What does the C++ committee need to do to fix large swaths of ABI problems?

A: Absolutely nothing

On current implementations, std::unique_ptr's calling convention causes some inefficiencies compared to raw pointers. The standard doesn't dictate the calling convention of std::unique_ptr, so implementers could change that if they chose to.
On current implementations, std::hash will return the same result for the same input, even across program invocations. This makes it vulnerable to cache poisoning attacks. Nothing in the standard requires that different instances of a program produce the same output. An implementation could choose to have a global variable with a per-program-instance seed in it, and have std::hash mix that in.
On current implementations, std::regex is extremely slow. Allegedly, this could be improved substantially without changing the API of std::regex, though most implementations don't change std::regex due to ABI concerns. An implementation could change if it wanted to though. However, very few people have waded into the guts of std::regex and provided a faster implementation, ABI breaking or otherwise. Declaring an ABI break won't make such an implementation appear.
None of these issues are things that the C++ committee claims to have any control over. They are dictated by vendors and by the customers of the vendors. A new vendor could come along and have a better implementation. For customers that prioritize QoI over ABI stability, they could switch and recompile everything.
Even better, the most common standard library implementations are all open source now. You could fork the standard library, tweak the mangling, and be your own vendor. You can then be in control of your own destiny ABI, and without taking the large up-front cost of reinventing the parts of the standard library that you are satisfied with. libc++ has a LIBCXX_ABI_UNSTABLE configuration flag, so that you always get the latest and greatest optimizations. libstdc++ has a --enable-symvers=gnu-versioned-namespace configuration flag that is ABI unstable, and it goes a long way towards allowing multiple libstdc++ instances coexist simultaneously. Currently the libc++ and libstdc++ unstable ABI branches don't have many new optimizations because there aren't many contributions and few people use it. I will choose to be optimistic, and assume that they are unused because people were not aware of them.
If your only concern is ABI, and not API, then vendors and developers can fix this on their own without negatively affecting code portability or conformance. If the QoI gains from an ABI break are worth a few days / weeks to you, then that option is available today.

Q: What aspects of ABI makes things difficult for the C++ committee.

A: API and semantic changes that would require changes to the ABI are difficult for the C++ committee to deal with.

There are a lot of things that you can do to a type or function to make it ABI incompatible with the old type. The C++ committee is reluctant to make these kinds of changes, as they have a substantially higher cost. Changing the layout of a type, adding virtual methods to an existing class, and changing template parameters are the most common operations that run afoul of ABI.

Q: Are ABI changes difficult for toolchain vendors to deal with?

A1: For major vendors, they difficulty varies depending on the magnitude of the break.

Since GCC 5 dealt with the std::string ABI break, GCC has broken the language ABI 6 other times, and most people didn't even notice. There were several library ABI breaks (notably return type changes for std::complex and associative container erase) that went smoothly as well. Quite a few people noticed the GCC 5 std::string ABI changes though.
In some cases, there are compiler heroics that can be done to mitigate an library ABI change. You will get varying responses as to whether this is a worthwhile thing to do, depending on the vendor and the change.
If the language ABI changes in a large way, then it can cause substantially more pain. GCC had a major language ABI change in GCC 3.4, and that rippled out into the library. Dealing with libstdc++.so.5 and libstdc++.so.6 was a major hassle for many people, myself included.

A2: For smaller vendors, the difficulty of an ABI break depends on their customer base.

These days, it's easier than ever to be your own toolchain vendor. That makes you a vendor with excellent insight into how difficult an ABI change would be.

Q: Why don't you just rebuild after an ABI change?

A1: Are you rebuilding the standard library too?

Many people will recommend not passing standard library types around, and not throwing exceptions across shared library boundaries. They often forget that at least one very commonly used shared library does exactly that... your C++ standard library.
On many platforms, there is usually a system C++ standard library. If you want to use that, then you need to deal with standard library types and exceptions going across shared library boundaries. If OS version N+1 breaks ABI in the system C++ standard library, the program you shipped and tested with for OS version N will not work on the upgraded OS until you rebuild.

A2: Sometimes, rebuilding isn't enough

Suppose your company distributes pre-built programs to customers, and this program supports plugins (e.g. Wireshark dissector plugins). If the plugin ABI changes, in the pre-built program, then all of the plugins need to rebuild. The customer that upgrades the program is unlikely to be the one that does the rebuilding, but they will be responsible for upgrading all the plugins as well. The customer cannot effectively upgrade until the entire ecosystem has responded to the ABI break. At best, that takes a lot of time. More likely, some parts of the ecosystem have become unresponsive, and won't ever upgrade.
This also requires upgrading large swaths of a system at once. In certain industries, it is very difficult to convince a customer to upgrade anything at all, and upgrading an entire system would be right out.
Imagine breaking ABI on a system library on a phone. Just getting all of the apps that your company owns upgraded and deployed at the same time as the system library would be a herculean effort, much less getting all the third party apps to upgrade as well.
There are things you can do to mitigate these problems, at least for library and C++ language breaks on Windows, but it's hard to mitigate this if you are relying on a system C++ standard library. Also, these mitigations usually involve writing more error prone code that is less expressive and less efficient than if you just passed around C++ standard library types.

A3: Sometimes you can't rebuild everything.

Sometimes, business models revolve around selling pre-built binaries to other people. It is difficult to coordinate ABI changes across these businesses.
Sometimes, there is a pre-built binary, and the company that provided that binary is no longer able to provide updates, possibly because the company no longer exists.
Sometimes, there is a pre-built binary that is a shared dependency among many companies (e.g. OpenSSL). Breaking ABI on an upgrade of such a binary will cause substantial issues.

Q: What tools do we have for managing ABI changes?

A: Several, but they all have substantial trade-offs.

The most direct tool is to just make a new thing and leave the old one alone. Don't like std::unordered_map? Then make std::open_addressed_hash_map. This technique allows new and old worlds to intermix, but the translations between new and old must be done explicitly. You don't get to just rebuild your program and get the benefits of the new type. Naming the new things becomes increasingly difficult, at least if you decide to not do the "lazy" thing and just name the new class std::unordered_map2 or std2::unordered_map. Personally, I'm fine with slapping a version number on most of these classes, as it gives a strong clue to users that we may need to revise this thing again in the future, and it would mean we might get an incrementally better hash map without needing to wait for hashing research to cease.
inline namespaces are another tool that can be used, but they solve far fewer ABI problems than many think. Upgrading a type like std::string or std::unordered_map via inline namespaces generally wouldn't work, as user types holding the upgraded types would also change, breaking those ABIs. inline namespaces can probably help add / change parameters to functions, and may even extend to updating empty callable objects, but neither of those are issues that have caused many problems in the C++ committee in the past.
Adding a layer of indirection, similar to COM, does a lot to address stability and extensibility, at a large cost to performance. However, one area that the C++ committee hasn't explored much in the past is to look at the places where we already have a layer of indirection, and using COM-like techniques to allow us to add methods in the future. Right now, I don't have a good understanding of the performance trade-offs between the different plug-in / indirect call techniques that we could use for things like std::pmr::memory_resource and std::error_category.

Q: What can I do if I don't want to pay the costs for ABI stability?

A: Be your own toolchain vendor, using the existing open-source libraries and tools.

If you are able to rebuild all your source, then you can point all your builds at a custom standard library, and turn on (or even make your own) ABI breaking changes. You now have a competitive advantage, and you didn't even need to amend an international treaty (the C++ standard) to make it happen! If your changes were only ABI breaking and not API breaking, then you haven't even given up on code portability.
Note that libc++ didn't need to get libstdc++'s permission in order to coexist on Linux. You can have multiple standard libraries at the same time, though there are some technical challenges created when you do that.

Q: What can I do if I want to change the standard in a way that is ABI breaking?

A1: Consider doing things in a non-breaking way.

A2: Talk to compiler vendors and the ABI Review Group (ARG) to see if there is a way to mitigate the ABI break.

A3: Demonstrate that your change is so valuable that the benefit outweighs the cost, or that the cost isn't necessarily that high.

Assorted points to make before people in the comments get them wrong

submitted by ben_craig to cpp [link] [comments]

Alternate CoS Asian Deiselpunk Setting PART 2: Reign of the Storm Shogun

Continued from previous Post: https://www.reddit.com/CurseofStrahd/comments/gwaj5b/alternate_cos_asian_dieselpunk_setting_part_1/

(Player) New and Variant Backgrounds: Some slightly altered backgrounds to give more ways to integrate your character into the world. Some of these backgrounds are simple reskins of existing backgrounds with new flavor text to help give potential character ideas.
Variant Soldier: Samurai
Skill Proficiencies: Athletics, Intimidation
Tool Proficiencies: One type musical instrument or Calligraphy Set,
vehicles (land)
Equipment: A banner bearing the crest of your clan or Daimyo, An ornate helmet and mask known as a Kabuto, a Calligraphy Set, A scroll stamped with the Imperial Seal denoting you as serving a Daimyo, a fine Kimono, and a belt pouch containing 10 gp
Feature: Way of Bushido – Anyone may follow the path of Bushido but you have devoted your life to following a strict personal code of honor. Bushido demands service, and so you have sworn yourself to a master or " Daimyo ". A Daimyo may be a local noble, the Jade Emperor, or even a childhood friend. It does not matter who a Daimyo is to a Samurai, only that they serve them with Honor. As long as the Samurai remains Honorable and obeys the will of his Daimyo he may requisition basic equipment and horses for temporary use as well as dwell for free in most inns. The owners of the equipment and innkeepers do this with the understanding that the Samurai will have his Daimyo cover the costs with interest to them later, though there are limits to this trust no Gunsmith will provide a Gun to a Samurai even just to borrow for free.
Variant Folk Hero: Ronin
Some Samurai do not follow a Daimyo, but instead swear themselves unto the weak and the innocent making them collectively his Daimyo. These roaming Samurai are called Ronin and they venture to the remote reaches of Daichi to bring justice.
The Ronin follows a strict personal code of Bushido that always includes " Protect the weak and innocent " among its edicts. As long as the Ronin follows this code his background Skill, Tool, and Language proficiencies as well as Background Feature are identical to the core Background Folk Hero with the exception of his equipment.
Equipment: A set of artisan’s tools (one of your choice), a humble unadorned Helmet and Mask called a Kabuto, a warm traveling Kimono, Scrolls detailing your lineage and status as a Samurai stamped with the Imperial Seal, and a belt pouch containing 10 gp
Variant Criminal – Shinobi:
Sometimes referred to as Ninjas by common folk, Shinobi are a cloister of loosely connected and often competing clans of professional assassins and infiltrators. Shinobi are masters of stealth and subterfuge and while the image of the black clad warrior made popular in Kabuki plays is certainly a major aspect of the Shinobi it is not all that they are. Though there are always exceptions most Shinobi Clans work for coin or for an ancestral Daimyo in much the same way a Samurai does, though it is rare that individual Shinobi serve a singular master. The most infamous clan are the Rain Maidens who have long served the Storm Shogun.
Shinobi are identical to the Criminal background in all ways except the following alterations to the background feature:
Feature: Clan Contact
You have a reliable and trustworthy contact who acts as a liaison to your Shinobi Clan. You know how to get messages to and from your contact even over great distances; specifically, you know the local dead drop locations, secret handshakes to contact messenger Shinobi, and trained messenger raven rookeries who can deliver the messages for you. As long as you are in good standing your Clan is willing to aid you acquire basic supplies and occasional vital information to aid you in your personal endeavours.
Variant Acolyte -Shrine Maiden: While men are permitted to watch over Kami Shrines it is traditional that a lone Maiden watch over the smaller way-shrines along major roads, these women lead very solitary and lonesome lives and it is not uncommon for them to occasionally be filled with a period of wonderlust where they seek out adventure before returning to their duties. Sometimes these Maidens have families that will live nearby but the Maiden is expected to live and sleep within her Shrine for most of the year. While this is tradition, there is no actual law requiring the Shrine Maidens to remain at their posts or to live solely within the Shrines and it is not particularly frowned upon for them to have lives outside their work.
Variant Entertainer – Geisha: An exclusively female profession of extremely skilled entertainers who spend their lives training in matters of conversation, party planning, tea serving, singing, acting, and often many other skills that serve well in keeping rich and powerful guests happy. Geisha is a highly honorable and respected profession that takes years of practice to attain the lowest rankings, while there are males who have obtained the same degree of skill and who’s abilities are identical to a Geisha’s they are simply called Entertainers. Geisha are sponsored by great noble houses, there are strict requirements and examinations to attain rank and title the cost of which can often indenture common Geisha to service to one of the great noble houses.
Variant Outlander – Vajra: A nomadic people of traders and merchants, they travel openly and without fear of the dark evils of the Storm Shogun under the protection of an ancient pact. They are reviled by many, refused entrance to most towns and villages but even so they are a peaceful people on whom the economy of Daichi depends. They revere their ancestors and believe in reincarnation, they do not worship the great Rakasha but do revere it and thus all Rakasha and tigers are sacred to them. They travel on the back of great elephants which carry their homes, their culture is rich and vibrant with a fondness for oral storytelling.
Identical in all ways to Outlander core background except exchange language choice for Language: Vajra and add Tool Proficiency: Musical Instrument. You may begin play with a Sitar, a guitar like instrument.
New Background – Invader:
You are a descendent of the coalition of nations that came to conquer Daichi one thousand years ago. While many still serve the Shogun Ishin you have chosen instead to join the other defectors in living peacefully among the people you once conquered. While despised even more than Vajra you serve an even more vital function in keeping the engines and machinery within the cities and villages of Daichi running. While the Invaders are from many nations their culture has eroded and homogenized over time. Their legends speak of a " Homeland " but none can remember the name. All invaders have a special innate affinity for their blood magic fueled hemo-diesel technology and all can instinctively repair and maintain it.
Skill Proficiencies: Insight, Arcana
Tool Proficiencies: Tinker’s and Smiths Tools
Languages: Invader’s Trade Tongue
Feature: Born Engineer – You instinctively know how to perform repairs on all manner of machinery magic and mundane. You may cast as a Mending as an Artificer of your level. Further, whenever you are in an annex or industrial sector of a city you may call on the aid of your fellow Invaders for access to crafting machinery, temporary use of simple vehicles, and a place to lay your head in the factory barracks.
(Player) New Subclasses:
Editorial Note: Due to some of the listed subclasses being from 3rd party content that I have purchased I cannot directly copy class abilities into this listing. The actual subclass will be presented as Handouts in-game. PM me if you require further information regarding each subclass.
Barbarian:
Path of the Juggernaut: You have built, scavenged, stolen, or otherwise acquired a titanic Diesel Suit. While most barbarians disdain armor you have made it into a focus for your Rage.
Ability Preview: Unstoppable – By expending a unique resource called " Momentum " you can burst through non-magical walls, furniture, and other barriers.
Path of the Iron Rider: You have formed a unique bond with a Tsukumogami Dieselcycle which you can call as a Familiar. You channel your rage into heavy firearms as you ride against the storm.
Ability Preview: Iron Horse – You can call a spirit possessed Dieselcycle to yourself using the Find Vehicle spell.
Ability Preview: Bullet Rage – Instead of channeling your Rage into melee strikes you may instead empower Firearms, eventually reloading and firing with blinding speed.
Bard
College of the Geisha – You are a professional of beauty and grace, your words, songs, and dances inspire in ways no other Bard can compare to. This has cost you the potency of magic and martial knowledge of other Colleges but strengthening and supporting your allies is more than worth it.
Ability Preview: Fascination – When an ally uses a skill empowered by Bardic Inspiration they also have Advantage on that roll.
College of the Vajra Weather a true born Vajra or one who has adopted their ways and culture, you have earned many of the unique powers of the foreign nomads. Farsight, Curses, and other oddities to aid allies or confound enemies are yours to command.
Ability Preview: Flash of Despair – You grant your enemies a moment of your own foresight, showing them their own imminent failure. You may use your Bardic Inspiration to grant penalties to your foes in the same ways you grant boons to your allies.
Cleric
Thaumic Engineering Domain: You have abandoned the old religions, accepting the new gods of Science and Reason. You are a man of logic not faith, but you do not ignorantly deny the existence of gods. Rather you recognize that they are a natural force in the world in much the same way as wind or fire are natural forces, and being a scientist at heart you have made it your speciality to put a microscope onto the powers of the divine.
Ability Preview: Armor of Divinity – You have discovered the underlying magical force that grants moments of supernatural protection to the Faithful and applied this theory to a physical suit of armor. You can summon a suit of diesel armor at will that is empowered by your knowledge of the divine.
Ability Preview: Theological Scholar – Where most Clerics dispense Wisdom you dispense Knowledge. Your spellcasting modifier is Intelligence, other class abilities that would scale off of Wisdom instead scale off of Intelligence.
Ability Preview: Spark of Creation – You slowly begin to apply your theories regarding the creation of life and the universe, fabricating advanced Automata with a spark of divine life.
Druid
Circle of the Machine: While most Druids protect the deep forests and natural wonders of the world, you have chosen to see to the needs of the Cities and their people. Viewing the wonders of technology as a creation just as worth of protection as any waterfall or mountain you have found a way to channel the raw powers of technology through your body to overcome the limitations of other Druids.
Ability Preview: Iron to Steel: You realize that Steel is just another form of iron, manufactured weapons are made from base natural components. You are proficient with Firearms and are not hindered by wearing metal armor or weapons.
Ability Preview: Machine Shape – The ultimate expression of your beliefs, you channel the raw force of technology and creation through your flesh to become one with the Machine. When you Wildshape you may change the Type of your beast shape to Construct.
Ability Preview: Automata Companion – As many druids surround themselves with the beasts of the forest you surround yourself with mechanized allies. You gain an Automata companion in the shape of a Beast.
Monk
Way of the Jade Bailiff You have sworn an oath to venture out into the distant reaches of Daichi bringing law and justice with you. You are trained well in the art of subdual and investigation, you never kill when arrest is a possibility.
Ability Preview: Pacify Suspect – You use your advanced hand-to-hand combat training to grapple or disarm targets while overwhelming them with a flurry of blows.
Way of the Singularity To obtain enlightenment is to comprehend infinity and eternity both, but flesh is finite and limited. In your journey to the nirvana of perfect understanding you have chosen to forsake flesh for augmetic steel. You have already installed numerous cybernetic implants within your body and will continue to do so, every pound of flesh lost bringing you closer to perfect understanding of the cosmos.
Ability Preview: The Flesh is Weak – Among various other augmentations you replace a full limb with a cybernetic augment. You may channel your Ki through this augment to bend the universe to your will, casting specialized Automation Spells.
Rogue
Drunken Master You realize that life is about more than just fighting, obtaining wealth, or rising through social ranks. It is a vital necessity for all living beings to relax and enjoy themselves, to this end you have made it your lifestyle to spread your mastercrafted brews far and wide.
Ability Preview: Good for what ails you – Your Sake is more than just simple rice wine, you have brewed it with ancient techniques gifted to the mortal races by the Kami at the dawn of time. These are not just booze but potent elixirs that replicate the effects of many Potions.
Alternate Drunken Master – hanoyu MasteMistress – While mechanically identical to the Drunken Master you have chosen to master the complex and delicate art of the tea ceremony rather than the bar room brawl. You use mystical tea leaves gathered from secret sanctuaries in the deep woods often tended by forest sprites rather than hard liquor.’’
Ranger
Automata Hunter Many in this world embrace technology, but not you. You hold special animosity and hatred for the industrialization that is poisoning Daichi, for the Automata that slaughter innocents, and for the slowly receding natural world. You have spent a lifetime learning the special weaknesses of machines, turning their own strength against them.
Ability Preview: Breaker Weapon – You have constructed an Anti-Tank Rifle, Thermal Torch, Piston Hammer, or Buster Sword. These weapons are customized to your exact specifications to destroy machines and bypass their armor. They are also still effective against organic targets, though their size tends to get in the way.

(Player) Misc. Player options, New Warlock Patron, Feats, Equipment, Familiars.
Editorial Note: Much like with Subclasses as some of this content is 3rd party I only provide flavor descpritions rather than actual rules which are instead provided through the compendium legally.
New Warlock Patron: Logic and Reason – Pacts with eldritch entities from beyond time are but a crutch to you. Through overwhelming knowledge of science and the deeper mechanisms that drive the cosmos you have become your own Patron.
Ability Preview: Space-Time Recollection – By using advanced knowledge of light particles and chronology magic you can view past events within an area up to 24 hours past. While you cannot willfully speed up or slow down the viewing of these events you can specify a general time frame such as " Morning, Early Afternoon, 9:45 PM "
Eldritch Invocations of Logic and Reason:
Binary Linguist – You can communicate with any Construct flawlessly, it always understands you even through pure body language. You in turn can understand the same.
Equipment:
Prosthetic Limb 50 GP – Loss of Limb is a common reality to the people of Daichi, necessitating such crude augmentations. While gorgeous paragons of artisanal mastercraft, or cunning advanced combat prosthetics do exist this is neither. This limb represents a modest workman’s limb. It does not come with excessive adornments and his simple unpainted steel. This device runs on 1 sp worth of Diesel fuel per day and perfectly matches the function of an organic limb. While the limb can replicate strength of up to a score of 20, being set any higher than the user’s natural strength would result in the limb tearing itself free or otherwise damaging the user.
DieselCycle, Price: Varies – The Dieselcycle is the most popular form of personal transport across Daichi, extremely rugged and reliable these two wheeled motorized vehicles can cross all manner of difficult terrain at breakneck speed. Many varieties of Dieselcycle exist, mirroring various breeds of horse and mule. Dieselcycles use the stat block of the specified Mount though with an intelligence, wisdom, and charisma score of 0, Type – Construct, double the listed HP and Speed, and with Bite or Hoof attacks becoming Ram attacks. Dieselcycles cannot move or operate without a Rider but unlike Horses do not feel fear and have no minds to warp with magic. A dieselcycle is destroyed when it reaches 0 HP and requires 1 GP worth of Hemo-Diesel to operate per day.
Familiars For sake of simplicity these entries will be kept brief, giving a short description of each new Familiar instead of a lengthy stat block.
Lesser Pheonix The smallest species of Pheonix, an extremely minor Kami. One should not summon such a creature if they are not prepared to give it proper reverance.
Helper Automata A small robot built to aid it’s maker. These Automata can be built into any shape from very small humanoids to mimicking animals, or more crude and utilitarian bundles of spidery limbs and tool armatures. Some are even shaped as extra mechanized arms to hold things for their masters.
Giant Silkworm Come in both " naked " and " fuzzy " varieties, these creatures provide the economic backbone for many mountain communities that make their living by weaving dazzling Kimono. They are calm tempered, vegetarian, and have no bite. Popular with small children.
Giant Flower Mantis Temperamental hunters this creature is as likely to bite and slice at it’s handler as it is an enemy. One rarely refers to these beasts as a " Familiar " for they more tolerate than serve their summoners.
Giant Hawkmoth The later stage of the SIlkworm’s life cycle, now possessing two great scythe limbs they become aggressive carnivores, though they retain the bonds they held in their larval stage with human owners and often are kept as beloved pets for many years.
Fu Dragon The least of the Dragons is still a mighty Kami. These Dragons will serve entire family lineages for generations as long as they are properly revered and respected.
Ancestor Spirit When a young Wu Jen or Warlock needs further guidance than can be given through mere rote memorization of ancestral tomes, sometimes an Ancestor will voluntarily leave Heaven to give spiritual guidance directly.
Feats For sake of simplicity Feats are cut down to just brief descriptions rather than the entire Feats entry. Racial Feats are not repeated here, they are listed in or near their racial entries in the Race section.
Bonded Weapon Wielder You attune your soul to a particular Weapon. You may call this weapon to your hand as a Bonus Action as long as it is on the same Plane as you. This Weapon no longer needs to be Attuned if magical.
Hengeyokai Ancestry You either carry some Hengeyokai blood in your veins, or if you are already a Hengeyokai discover enough of your hidden ancestries to unlock a new Animal Form. You may shapechange into an animal ( though not a Hybrid ) or a new additional animal form if already a Hengeyokai.
Tattooed Special Prerequisite: You have earned the respect of a master Monk or Maiko who has chosen to gift you one of these magical Tattoos. The tattoo is filled with magic and grants you a particular benefit dependent on the tattoo you earn.
Firearm Mastery Countless hours with a gun in your hand have paid off by allowing you to engage in melee combat with a gun among other benefits.
Novice Inventor Through constant experimentation you have dipped into the Automation magic of the Invaders. Gaining one of their spells and a Cantrip.
Augmented You have taken into your body extensive cybernetic improvement. You become more faster, stronger, or tougher and your mechanical parts make you more resilient. If you could before, you can no longer hide your cybernetic nature, your limbs and organs are obviously artificial.

(DUNGEON MASTERS) Okay with the general setting and player info out of the way we can talk a bit about the actual campaign. While I won't post all my notes here I will give enough of a general overview such that DM's can use it as a jumping off point if they so wish.

The True Backstory of Daichi and the Storm Shogun:

Isak was raised in a family of wealth and status with a glorious military history in a nation resembling 1920's America. He was brought up with the understanding that war was a glorious and honorable endeavor where the strong defended their ideals on the field of battle. Advances in technology and politics robbed him of this delusion however, wars of defense became wars of colonial conquest. Officers who once led from the front now telephoned their orders as men died by the thousands to machine gun fire. Isak grew to resent and hate his own people for failing to live up to the fantastical narrative he had been raised on. When Isak conquered Diachi he soon found solace in it's path of Bushido, the Samurai of Daichi embodied the world Isak wished to live in and so he sought to emulate them, eventually renaming himself the Storm Shogun Ishin. Ishin soon received orders that Daichi was to be colonized and her people marched onto reservations. Ishin's leutenant and childhood friend Mara ( Rahadin ) was of a people similarly subjugated and made certain Ishin knew fully what these reservations would do to the people of Daichi. Ishin promptly sought a means to betray his commanders and save Daichi. Delving deep into an ancient temple formed of Amber from the World Tree he uncovered the prison for the Four Great Perils. Hearing the whispers of Taowu who easily convinced Ishin that if he released them they would in gratitude draw Daichi away from the Material Realm such that it would be safe for eternity, however this act required a sacrifice in the form of the " ultimate betrayal of the one you love most. " Ishin despaired as he knew it could only mean killing his beloved sister. Ishin's Sister never entered the army but dissapointed her family by taking up the trade of a humble engineer, she was hesitant to accept Ishin's offer years ago to come to Daichi but relented to see her beloved brother again. During her stay at the former Imperial City she met a street thief named Yoko and the two quickly fell in love. Ishin returned to the city from his journey to the Amber Temple to discover the two being married beneath a sakura tree. Ishin quickly slew the Samurai Honor Guard ( The Player Characters ) and then murdered his own sister in cold blood. As life left her he looked to Yoko and knew that the betrayal was not sufficient, he had to first take from his sister the thing *she* loved the most before his betrayal would be truly ultimate. However with his sister dead Yoko flew into a rage and fought the Shogun with every dirty trick she knew, forcing the shogun to kill her. Taowu was furious at the Shogun's incompetent failure, yet with his betrayal half-complete the Great Perils were still able to manifest partiallin in Daichi and swiftly swept it away from the Material Plane while creating the eternal Typhoon in the process.

Now empowered by the Great Perils, the immortal Storm Shogun has been trapped in a thousand year long cycle of murdering his sister, her lover ( Ireena ), and their four guardian Samurai ( The Player Characters ). On the thousandth anniversery of his failure the Great Peril's hold on Daichi will wane and it will crash back to the Material Plane, destroying the world in the process. To save the world either the Storm Shogun must prevail......or the Samurai must find a way to undo the damage he has caused.

Meanwhile in the sleepy Kimkaro Village four humble Samurai are called to the home of the Daimyo who lies on his deathbed, he wishes to see his adoptive daughter Yoko one last time before he passes and has asked you to fetch her........

(Dungeon Masters) General Plot overview: This is how the game is intended to flow and be resolved. It is of course very much up to individual Dungeon Masters to modify this to fit their players and narrative. Obviously no plan or plot survives first contact with Players so adjust as needed. I've woven in plotlines from some other Modules I have to pad out areas I felt needed it.

Level 1: The party goes to find Yoko at her home outside the village walls and discovers that an Automata ( Animated Armor ) she has been scavenging parts from has sprung to life, possessed by a ghost screaming about it's Hunger. The ghost is Shinzo the Eater, a spirit astrally projecting from his emaciated corpse in the Death House. After defeating the machine the party visits the Daimyo who offers his blessing for the party to leave the village.....after they help resolve the current issue with the polluted river. The River the village relies on for fish has been dying off with the river goddess refusing to answer prayers.

The party spends a week searching without avail but while fishing Yoko finds a talking Koi Fish claiming to be the River Goddess! She needs to pass through the Dragon Gate at the top of a nearby mountain to resume her true form. (Dungeon Master) The " River Goddess Koi " is actually Jin-Hao the daughter of the true river goddess Jin-Zhi, he has been cursed into a koi fish as punishment for her arrogance and hubris in attempting to solve the poisoned river problem herself while her mother was away attending to matters in Heaven. Jin-Hao tried to use advanced magic far beyond the Wyrmling and accidently caused a massive lightning storm ( Nobody died thankfully ). It should be very obvious to the players that the Koi is lying and she will confess the truth under fairly little scrutiny as long as the party is kind.

A journey upriver ensues where the party must brave several skill challenges to overcome obstacles, there is always an extremely easy path that merely takes a long time to navigate. Jin-Zhi has engineered this to teach her daughter ( and the players ) patience. Weather the players succeed or fail the skill challenges Jin-Hao comes to realize that taking time and being patient solves more problems more easily than rushing ahead. Try to reflect in roleplay her slowly becoming less of a whiny impatient child and more level headed and patient as the player's progress. Eventually they will come to the Dragon's Gate and pass through where a final challenge awaits, Jin-Zhi in the form of a Tiger. This test is not for her daughter but rather for the Players, to see if they will be worthy of the gift she has for them. After Jin-Zhi takes 40 HP damage ( adjust as needed for party size. ) or the party is reduced to 0 HP ( They cannot die while in the Dragon's Gate and Jin-Zhi will resurrect them if they somehow do. ) she will adopt her true form and do the same to her daughter who will become a Lung Dragon once more. If the party has taken the lessons learned during the journey to heart, encouraged Jin-Hao to do the same, showed honor, teamwork, and courage in the final combat ( weather they won or not ) , and generally been polite she will reward them with a Clam of Patience.

Clam of Patience: Wonderous Item, Uncommon - This pearlescent creature produces a single use Pearl of Power once a Week. This pearl is known as a " Fruit of Time " and will crumble to dust when used or when the Clam produces another.

Jin-Zhi will offer to allow Jin-Hao a second try at fixing the river but the young dragon has learned her lesson and says she is not ready. Pleased with this Jin-Zhi explains to the party that the River's poisoning is from a dam downstream that is flooding the river with pollutants. She allows the party to ride on her back as far downstream as she is able to go before she reaches the edge of her allotted domain. At this point the party should be Level 2. If the party has grown attatched to Jin-Hao consider allowing them to retain her as an ally for the coming dungeon ( Silver Dragon Wyrmling ), if not grant them Inspiration.

Level 2: The party reaches the Dam which has an ancient house built on it in the style of the Invaders. This home belonged to Commander Durst, a cruel and wicked military officer who was " encouraged " to build his home far from any civilization as a form of exile by the Storm Shogun. This house is effectively identical to the Death House, however Rose and Thorn are replaced by Shinzo the Eater, Durst's son who was trapped in the deep watershed of the estate and starved, feeding on the corpses of his family after the Shogun slaughtered them upon his rise to power. ( The Shogun was ignorant of Shinzo's presence as he was hiding at the time. ) Shinzo soon became a horrifying emaciated Oni that is trapped within the building. Use the stats for the Shambling Mound though roleplay the Engulf Ability as Shinzo stuffing people whole into his horrid mouth lined with rows and rows of razor sharp teeth. Consider removing the Animated Armor ( The party already fought an Automata ) and making the Specter non-hostile. Replace the Grick and Mimic with more Asian themed monsters of equal CR.( I use creatures from the " Monsters of the Orient " complete Beastiary. )

Upon completing Death House the Dam begins to crumble and disintigrate, cue the party ( hopefully ) dramatically escaping just as the dam breaks and the poisoned waters are freed. Jin-Zhi in grattitude uses her magic to stop the dam from otherwise causing catastrophic flooding and the River is soon restored to health. The party levels to 3.

Level 3: The funeral of the Daimyo was delayed due to the pressing issue of the River. Now as the party returns they may proceed with burying Yoko's adoptive father, the arrangements go off without a hitch. However a mysterious individual is present, a woman in the uniform of the Storm Shogun's tank battalions. This woman is Lieutenant-Commander Mara Strahd's right hand woman ( Rahadin ). This character embodies the role of femme fetale but is more honorable than Rahadin and if she witnesses the Feast of St. Andral's event she can be convinced to betray the Storm Shogun.

She explains that she is an agent of the Storm Shogun and has come to declare the new Daimyo of the village. Considering the party single handedly are responsible for the River being cleansed she asks them for their recommendations and honors their requests, she holds relatively little regard for Shang as Daimyo and will only declare him if asked to. ( She dislikes anyone who acts through Proxy so make this clear unless Shang accompanied the party during any stage of the adventure ). She commands the party to go to The Imereial City to inform " the traitors " of the new Daimyo's appointnemt and issues them travel passes if they do not have them already.

At this point the game proceeds as normal for Curse of Strahd with reflavorings where needed.

Old Bonegrinder is now a Tea Plantation run by three White Haired Witches, Dream Pies are replaced by Dream Tea.

The Abbot is now the Maiden who operates a vast shrine at the village of Kreza, where she creates horrid amalgamations of Flesh and Metal. ( Cyborgs replace the Mongrelfolk )

The Imperial City is Vallaki, I allow the option to have a " golden ending " to the questline in which the Jade Emperor is ousted but his wife the Empress enters a political binding agreement ( or marriage if you want ) with Evangaline Pentageist and the Jade City remains free while improving the lives of all citizens. Evangaline keeps the Shogun placated with hidden loyalty without turning the city over to him wholesale.

The biggest departure is the removal of the Martikovs. I repalced them with The Troupe, a band of 36 highly skilled Kabuki Play actors and actresses who each own a distinct Mask. The party has hints of these masks throughout the adventure and slowly learn that there is a massive information network of these players. Inspired by the White Lotus from Avatar the Last Airbender, they preserve the story of the true origins of the Storm Shogun and help the party realize that they have been reincarnated dozens of times only to fail, this helps them learn from past mistakes.

The second greatest departure is that the Shogun's Sister ( Sergei ) is also reincarnating. She and Yoko have over time retained memories of each other despite their constant reincarnations, though the memories are vague and dreamlike. This is how Yoko has slowly become a skilled engineer while the Shogun's Sister has slowly become a street thief in the Imperial City. The two should meet often throughout the adventure, first as adversaries but slowly growing to be lovers. NOTE: Doing a love story, particularly one that does not involve players, is hard to make engaging. Imply rather than show, have Yoko show up later than usual at night and say how much fun she had while out with a " Friend " etc. etc.

I had Yoko be a Kitsune for this adventure and had the Shogun's Sister reincarnate as a Tanuki just for the fun of it but feel free to make them be of any race. You can make the Shogun's Sister Male if you wish, I personally just felt like adding some diversity to the campaign.

Wooooo! That was a long journey but we mostly got through it. I know there's alot that's glazed over but that's just part of my DMing style. I don't really write down every possible thing because honestly my players are gonna blow 90% of those plans up before they even make contact with them. If your curious to know more about anything just let me know and hopefully I didnt' bore you too much!
submitted by Zephyr_2 to CurseofStrahd [link] [comments]

Episode 9 REDONE ideas

Because of the Reddit character limit, I am posting this separately.
Episode IX - Balance in the Force:
If The Force Awakens was a bad premise executed incredibly well and The Last Jedi was an incredible premise executed badly, The Rise of Skywalker is a terrible premise executed horribly.
I disagree with the popular notion that Rian cornered J.J. because TLJ screwed everything up. I have many problems with The Last Jedi, but Rian took what could have been a visionless carbon-copy of the OT, and gave a new bold direction, an inspiring purpose for this trilogy to exist. It opened up so many possibilities for Episode 9, but J.J. took the easiest soulless path. Episode 9 should never have been the plot conclusion that reverses from The Last Jedi and attempts to be a thoughtless fan service finale that ties up the Prequels and the Originals by redoing Return of the Jedi. Episode 9 should have been the thematic conclusion that wraps up the motifs of the Prequels, the Originals, and The Last Jedi.
The Rise of Skywalker failed to answer the questions that the trilogy has raised. I am not talking about J.J.'s mystery boxes. Sure, I would have liked to learn how Maz got Luke's lightsaber and who Max von Sydow's character was, but I am talking about the thematic questions. What should the Jedi be and where should the Jedi head toward? What should the galactic government be after the failures of the New Republic? What is the will of the Force? What is the balance? Why is Kylo Ren's path wrong? What is the permanent solution to the chaos that has been repeated again? Despite branding itself to be a finale that attempts to unify the whole saga, The Rise of Skywalker answers none of these because killing Palpy again, this time he is 'dead' dead, solves every problem of the galaxy.
The movie fails to wrap up the 42-year franchise, it fails to wrap up what The Last Jedi has set up, it fails to answer The Force Awakens's questions, only raising more questions, it fails to be a fan-service movie, and it even fails to be a fun popcorn movie as its own. This is Spectre of Star Wars. It bafflingly misunderstands what the essence of Star Wars is.
As the title suggests, this new story is about our heroes exploring what balance in the Force means. Balance is not just killing Palpy again and be done with it. Here are the basic ideas. Let's continue The Last Jedi's message about the power of myth and everyman.
EDIT: I have incorporated EmperorYogg's idea.
Crawl:
The flames of resistance burn brightly! Word of mouth about the heroic act of Jedi Master LUKE SKYWALKER has spread from planet to planet and inspired the galaxy anew.
To suffocate growing unrest, Supreme Leader Hux has silenced all communication between neighboring systems. Defiance is punishable by death.
As the First Order struggles to maintain their systems, Lord KYLO REN rages in search of all records of the Force and anyone associated with it, determined to destroy any threat to his power....
submitted by onex7805 to RewritingNewStarWars [link] [comments]

Binary options trading strategy  4000$ for 1 hour BEST 1 MINUTE STRATEGY FOR BINARY OPTIONS IN 2020? 1 minute live trading - binary options - candlestick tutorial strategy 1 Hour Binary Options Strategy Binary Options Trading for Beginners - Simple Step by Step Binary Options Tutorial

Trading Futures, options on futures and retail off-exchange foreign currency transactions involves substantial risk of loss and is not suitable for all investors. You should carefully consider whether trading is suitable for you in light of your circumstances, knowledge, and financial resources. You may lose all or more of your initial investment. [100% Off] Terms for Binary Options Traders Udemy Coupon. Go to Offer. Lots of people think that Binary Options trading is just a form of gambling and that there are no real winners. This is obviously a misconception. Binary Options trading can be broken down to a science and some would even say an art form of mathematics. Binary options trading is an up and coming financial trading method in which there are only two possible outcomes, hence the name Binary. The premise of Binary options trading is that you, the trader, guesses if the asset will increase or decrease in value by the time the position expires. Welcome to the largest expert guide to binary options and binary trading online. BinaryOptions.net has educated traders globally since 2011 and all our articles are written by professionals who make a living in the finance industry and online trading. We have close to a thousand articles and reviews to guide you to be a more profitable trader In accordance with European Securities and Markets Authority’s (ESMA) requirements, binary and digital options trading is only available to clients categorized as professional clients. GENERAL RISK WARNING. CFDs are complex instruments and come with a high risk of losing money rapidly due to leverage.

[index] [4497] [19313] [12918] [28943] [5950] [11749] [4038] [22367] [28577] [21474]

Binary options trading strategy 4000$ for 1 hour

My Best Unique IQ Option Strategy - work 100 % - Binary Options Trading System 2020 - Duration: 11:35. SUCCESS TRADING 186 views. New; 11:35. Language: English Location: United States We have been constantly ranked #1 Binary Options Trading Service & Forex community for our amazing performance. Come trade Binary Options Signals and Forex Signals with Franco on live stream. binary options binary options method, binary options trading method, binary options trading, binary options review, binary options tutorial, binary options signals, binary options trading strategy ... Learn our 1 hour binary options strategy using PSAR breakouts, brought to you by Investoo.com. Join Investoo.com today and learn to trade in more than video lessons and trading courses. #binary_options_trading #binary_options_strategy_2020 #binary_options #binary_options_strategy #binary_options_strategies #binary_options_signals Loading... Autoplay When autoplay is enabled, a ...

Flag Counter