Updown Signals Review - Binary Options Trading Signals Review

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]

what is this i just downloaded (youtube code?)

so this is kinda a wierd story. I was planning to restart my computer. (cant remember why) I spend most of my time watching youtube videos so i had alot of tabs open. So i was watching the videos then deleting the tab but not opening new tabs. So i was down 2 i think 1 it was a pretty long video so i tried to open a youtube home page tab just to look while i listened to the video. And this is a short exerp of what i got.





YouTube











submitted by inhuman7773 to techsupport [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]

First Contact - Part Seven / Realization of Second Contact

[first] [prev] [next]
Many great cycles had passed without a single contact within the Great Emptiness.
Many of the members of the Unified Science Council began to believe that perhaps it was some kind of lingering energies left over from the Precursor War that had created mass hallucinations, or perhaps it was just isolated incidents with no meaning.
Seventeen Great Cycles and not a single clue that supported the existence of the Solarians, the Clone Directorate, sentient AI's, or any of the other strangeness discovered over that Great Cycle.
Even the Unified Executor Council had been forced to agree that the Solarians had simply, well, vanished.
The Unified High Council had no choice but to allow exploration of the Great Emptiness and so passed legislation to repeal the prohibition against exploration of that region of space.
That is how Monnat Banaltee of the HiKruth found himself in charge of a crew of a dozen of the Deep Space Explorer's Guild and in possession of one of the most advanced ships the Unified Technology Council would permit to be built.
The ship, named To Wrest Answers from the Darkness, had the best jumpspace engines, the most advanced computers with the most powerful computation and analysis lobes, laboratories and testing capabilities more advanced that any other ship, with sensors more sensitive than any other, communications capable of hearing the slightest whisper. Additionally, the ship's omnitranslator had been loaded with the TerraSol lexicons learned so far.
That was an entire Great Cycle ago.
Which was why Monnat, who refused the title of Captain and preferred Most Learned, was almost sick from boredom despite his race being legendary for patience. Even the upcoming arrival in a new solar system, deeper than anyone had gone so far into the Great Emptiness, failed to alleviate his boredom.
How could it? The last thirty systems they'd scanned had been the same: deeper than anyone had explored.
And empty except for a hundred million years of isolated evolution, largely resulting in a few plants or maybe even some non-sapient life more evolved than a cluster of cells.
Monnat was willing to bet his next three research grants that the next one would be the same.
"Preparing to drop," Aastruk stated. A master of astrogation and navigation, who had led whole fleets through jumpspace with his skill during his many years as part of the Unified Military Fleet, Aastruk was capable of making such sublime jump transitions that even the most sensitive of the scientists suffered little more than a light spell of dizziness.
At the end of the countdown there was a slight queasiness and that was all, allowing Monnat to tap his vestigal claws together and stare at Billik, a sensor's technician of extreme skill.
After nearly an entire cycle Monnat was beginning to wonder if Billik had decided not to do his job out of sheer boredom.
"Scan Master Billik?" Monnat asked.
"A moment, please, Most Learned One," Billik said. The scan tech looked over at Z'Mak, the Chief of Maintenance. "Oh Attentive One, Lord and Master of the Mechanical, can you perform a diagnostic upon my lowly instrumentation?"
Monnat sighed internally. Sometimes he wondered if all the insistence on titles and honorifics made it so things took longer than necessary. A heretical thought, he knew, but one had had asked himself many times over his long life.
Z'Mak, who was a stickler for protocol, nodded, the ruffle around his neck and down his spine flushing in pleasure. He examined his displays, tapped in some commands, then leaned back.
"Your instrumentation and displays are all functioning at over 90% efficiency, most attentive and inquisitive scanning technician," Z'Mak said.
At least Billik did not take offense at the obvious omission of honorifics, as he had during the first long cycles of the voyage, as Z'Mak was of the belief that those who joined the Unified Military Council or the Fleet were somehow less than those who devoted their lives to other pursuits.
"Then it appears, at long last, we have found a system with unknown xenosapients," Billik stated. "There are several settlements on the surface, four orbiting stations, solar collectors, and power readings everywhere."
"Launch a probe," Monnat said. "I will be waiting in my chambers. Announce to me when the probe begins to relay data."
Billik nodded as Monnat stood up on all four legs and moved toward his personal chambers.
-------------------
"Most Learned One," E'kotat's voice interrupted Monnat's viewing of a lecture on how a stable reaction within the translation chamber of a jump-drive was only established one way, despite crackpot claims of other possibilities.
"Yes, Second Leader?" Monnat sighed. He doubted that it was going to actually be anything. There had been nearly a dozen false alarms in the first few cycles of his mission. Every time it had turned out to be just a lost colony.
"You should come to the bridge immediately," E'kotat said. "Make all due haste."
Monnat frowned. E'kotat was a Drimarian, cold blooded quasi-mammal who's race's physiology was almost incapable of excitement. For him to urge haste was unusual.
And noteworthy.
When he entered the bridge, Monnat noted that Security Officer Lukamit, a computer code researcher who held a position mostly ceremonial, was busy over his terminals, all three of his lab assistants working with him.
"What is the emergency? Did something happen to the probe?" Monnat sighed, settling into his crash couch.
"We lost contact with it, Most Learned One," Billik stated. "It was intercepted by an energy pulse that shut it down. Soon afterwards, we were..."
"I will inform the Most Learned," Z'Mak snapped. He looked at Monnat. "It was then that we received communication signals. It attempted to open a communications channel but at the same time attempted to penetrate our computer network. Whoever the signal is from, they are most insistent that they be allowed access to our computer systems."
Lukamit interrupted, ignoring Z'Mak's flutter of his crest. "We are fortunate that they only use a binary type logic and only binary signalling. This allows me to use the lobes in parallel to more effect than they can. However, they did access the omnitranslator's lexicon and have been attempting to transfer it to their systems."
Monnat thought a moment. "Allow it."
"But standard is to exchange lexicons," Z'Mak protested.
"Do as I command as Most Learned One," Monnat told Z'Mak, fixing him with a stare that used all four eyes.
Z'Mak backed down.
"Lexicon is transferred. Wait, they've stopped trying to access our systems," Lukamit said. "They've purged their own code and completely withdrawn."
"We have an incoming signal," Juketet stated, listening closely. "Audio and visual, although only across a limited base three-primary color scale. They are not permitting any reply. Transmission only. It's quite rude."
Monnat sighed, fully expecting it to be another lost colony. Probably fallen back to aggression and superstition.
Instead the figure that appeared on the screen was unlike any he'd ever seen. Tall, graceful appearing for a biped, mammalian, with jewels adorning them, dressed in comfortable and gossamer appearing cloth, long golden hair and pointed ears. The female, and it had to be a female as it had mammalian milk ducts that were prominent, was surrounded by scantily clad bipeds that were shorter but had the same lithe build and pointed ears.
For some reason she gave off the appearance of being superior to everyone present. As if something more than nature, because nature could never produce such a perfect specimen, had crafted her to be perfection embodied.
It was a strange feeling for Monnat.
When she spoke, it was a strange language, linguistically designed to flow together and sound like music even mathematically.
Monnat noticed that Z'Mak seemed offended by the being.
The translation showed below, at the bottom of the screen.
"Welcome to the Magic Realms of Meratarrian. I am Queen Radosalvov the Graceful, you may call me Queen, Your Highness, or Radiant Divine One."
Z'Mak almost seemed to choke.
"According to Confederate Law, attempting to pirate views via recording probes without a license as well as permission from Galactic Studios Incorporated and Electronic Artistic Studios is a grave violation of our legal rights."
That caught Lukamit's attention.
"As your language is unknown to me I will assume that you were not meant to intrude upon this realm and I have decided to extend elven hospitality to you."
Monnat kept his expression from changing. Another race. Bipedal, warm blooded, mammalian, forward facing eyes. Obvious Solarian.
"I will allow you four local hours upon the surface as a freeware demonstration for one of your crew. I formally invite a sentient of your choosing in to my realm and invite your ship to stay within communication range of this planet."
She gave a gesture that used up the least amount of effort but still looked imperious, as if she was the most important being in the entire universe and the crew of the Wrest Answers from the Darkness should considered them blessed just to be allowed to view her.
"I will give you one of your time units to decide who shall enter the Magic Realms of Meratarrian."
The image vanished.
"They've cut transmission," Juketet stated unnecessarily. "Wait, they're transmitting a document. It looks like a legal document of some kind."
Monnat perked up. "Send it my ready room and have the ship computer go over it. Let us see what they are offering."
Juketet nodded.
------------------
Halfway through the time limit Monnat realized that even with the computer's help deciphering the document, which was some kind of terms of service, would be impossible. It was, quite possibly, the largest legal document he had ever seen. The ships operating system took up less storage and used less data than the document itself. Just viewing the document gave the issuer of the document legal rights over all kinds of things.
It repeated over and over that the issuers of the document, one Electronic Artistic Studios and one Galactic Studios Incorporated, could not be held liable for any damage to anyone using their services, to include death, dismemberment, disintegration, damage to neural or emotional networks, physical or metaphysical discomfort, damage, or alteration.
It went on and on and on.
But Monnat had been tasked with exploration, and he'd seen that Galactic Studios Incorporated and Electronic Artistic Studios operated under Terran Confederacy law and were based on TerraSol, which meant, despite appearances, the "elven queen" was a Solarian.
Which made no sense.
How many species rose to prominence in the system?
Monnat needed information, but most of all, he needed a volunteer.
And for that, he called Aastruk into his ready room to see if the saurian would volunteer to be part of the "free demonstration" that the "Queen" was offering.
To Monnat's surprise, Aastruk agreed immediately.
Monnat figured it was out of boredom.
-------------------
The shuttle that gathered Aastruk was flamboyant, lavishly decorated with rare elements to enhance its appearance and obviously built to appeal to anyone's eyes. Even mathematically it was almost perfect. Aastruk boarded wearing a vacuum suit and carrying a transponder.
The Queen had agreed to that much of a safety measure, even if she refused to allow recording devices.
Monnat settled down, as the shuttle left, and waited. Four local hours was less than a dozen cycles.
----------------
When Aastruk returned he stated one simple sentence: "We must leave now."
Monnat respected Aastruk's time with the Unified Military Fleet and ordered that the ship move to jumpspace immediately. Once they were safe in jumpspace he called Aastruk into his quarters and urged the reptilian navigator to speak.
"When I first got there, I was given many options. Enhanced virtual reality, real-skin which apparently involves me actually going down to the planet, skin-sheathe which is allowing me to mentally control a cloned version of myself from the station, or something called 'hitch-hiker' mode which is allowing me to see through someone else's eyes," Aastruk said, rubbing his snout wearily.
"What did you choose?" Monnat asked.
"Hitchhiker is the only option available for the free demonstration version," Aastruk said. He shuddered. "It allowed me to not only see and hear what was going on, it allowed me to taste, smell, and feel it. Not only that, I knew I could, well, share thoughts with my host."
Monnat made an annotation. "Did you?"
Aastruk nodded. "She is from someplace called Alpha Centauri, one of the earliest Terran Confederacy's colonies. That's aside, however, and not the important part."
Looking up Monnat frowned. "What is important than that?"
"She was, to use her words, reborn as something called a 'dwarf' and took the profession of blacksmith," Aastruk said. "Working in iron, steel, some exotic metals I've never heard of. She makes armor, weapons, and other metal objects as well as wood carving..."
"Who does she make these weapons for?" Mannot asked.
"Soldiers who guard the town and being who wish to enter into the wilderness to seek out adventure even at the risk of encountering dangerous wildlife that will seek to slay them if they do not slay the wild-life first. She makes weapons and armor for these people and then, and I use her words: magics the excrement out of them which is why...."
"Magic?" Monnat scoffed, interrupting. "A people that advanced believing in magic."
Aastruk nodded. "When she explained magic to me was when I realized we must leave at once."
"What was so frightening about it?" Monnat asked, wondering if Aastruk would need therapy.
"Nanotechnology is something we use. For medical, research, manufacturing, computation," Aastruk said. Monnat nodded as Aastruk continued. "They have devised a type of nanite that uses broadcast power to sustain itself and floats through the very air. It permeates he atmosphere, is in everything they drink, everything they eat, even in the objects."
"Risky. What if it went out of control? Entire planets have been lost to such ill advised experimentation," Monnat asked.
Aastruk shook his head. "They aren't worried about it. You see, they use the nanites to manifest certain reactions. From creating a monomolecular sword edge and infusing the blade with nanotech like my host did to calling up fire out of thin air, this so called magic is nanites."
Monnat cringed slightly. "And anyone can use it with a simple interface?"
Aastruk shook his head again. "No. It requires will, being able to chant out loud the command strings, and being able to withstand pain. The more energy intensive the task the nanites carry out, the more pain the nanites inflict."
"Madness," Monnat whispered. "And they willingly subject themselves to this to use this so called magic? I understand, if they are born there and this is the path to power, but still, to willingly subject one's self to pain."
Aastruk shook his head. "No, Most Learned One, it is worse than that."
"How is it worse?" Monnat asked. "Please, Aastruk, will you define worse?"
"While some beings who live on that planet were born there, Most Learned One," Aastruk took a deep breath. "The majority pay for the privilege of living their lives there. Some even pay to be other species, such as my host, who had her entire body rebuilt from 'Pure Strain Human' to 'dwarf' in order to live out her fantasies."
Aastruk fixed Monnat with his gaze. "It's a planet sized, fully interactive, nanite assisted, amusement park that they pay to experience, sometimes for their entire adult lifespan."
Monnat goggled at Aastruk. The thought of having one's body changed to live out a fantasy was grotesque, but the idea that it was some kind of amusement park horrified him.
"You were correct in having us leave at once. Was there anything else that made you so urgent to leave?" Mannot asked.
Aastruk nodded. "At the end of my 'free trial' several of the 'High Elves' offered to sponsor me if I agreed to fight in their name for their glory," He said, shuddering.
Mannot nodded. "A wise idea, returning. I do not blame you for wanting to return when that undoubtedly caused such fear, to be dumped in such a place where advanced technology is used to live out a fantasy of primitivism."
Shivering, Aastruk shook his head. "No, Most Learned One, I did not want to return out of fear, I returned because I wanted to stay."
Aastruk hung his head and whispered softly. "Glory and honor to my house, with eggs and burrows the envy of all, by might or trickery my house, my burrow, my clutch ascendent."
Mannot stared in horror at Aastruk repeating such an ancient mantra of his species and decided that the expedition was over.
----------------
The Unified Exploration Council examined the records as well as the statements of Fleet Admiral (retired) Aastruk eshThsashal and ordered another exploration expedition created.
The Unified Science Council determined that the Solarians, perhaps the entire Terran Confederacy, was using technologies in ways that were prohibited as well as dangerous, not only to the Terran Confederacy itself, but to all those around it.
The Unified Executor Council decided that armed Executors would accompany all other research and exploration vessels to prevent any desertions to such a dangerous civilization.
Aastruk eshThsashal converted all of his possessions and wealth to simple gold bars and vanished.
------------------
I, AASTRUK eshTHSASHAL, agree to abide by the above terms and services as set out by Galactic Studios Incorporated and Electronic Artistic Studios, as well as the Meratarrian code of conduct.
------------------
TO: CONFEDERATE INTELLIGENCE
FROM: QUEEN RADOSALVOV THE GRACEFUL, OVERSEER OF MERATARRIAN (All Rights Reserved)
Had visitors not long ago, like I told. However, it appears that one of their number liked their trial time so much they've returned to my divine embrace (LIFETIME MEMBERSHIP PURCHASED). Attached is crude documents and illusions of their statements about the mundane and boring life they left behind, the poor dear. I'm sending these to you out of consideration.
He is a lovely subject (ITEM SHOP PURCHASE: PLATINUM STARTER PACK), who has been yearning all his life for the adventure (DLC PURCHASED) only I, in my infinite wisdom and beauty, can provide to him (ITEM SHOP PURCHASE: USER GENERATED FRIENDS AND FAMILY PLATINUM PACK). I have hereby granted him asylum from such a dull and dreary place, and made him a citizen (DLC MEGAPACK PURCHASED) of Meratarrian (EXPANSION PURCHASED) with permission to found his own house (DLC PURCHASED) as well as quest for his true love (DLC PURCHASED) as well as create offspring (EXPANSION PURCHASED). I have high hopes for my new subject (ITEM SHOP PURCHASE: KOBOLD HERO PACK) and know that he will go far (ITEM SHOP PURCHASE: DRAGON BLOODED) in my realm.
Enjoy your files.
Love and kisses.
Her Eternal Elven Grace, Divine Light of the Aether, Lady of Magic and Power, Queen Radosalvov.
--------NOTHING FOLLOWS-----------
CONFEDERATE INTELLIGENCE MEMO
CC: Artificial Biological States; Digital Artificial Intelligence Infonet Worlds; TERRASOL.GOV; Cyborg Cooperative; Clone Directorate; Mantid Free Worlds; Traena'ad Hive Worlds
Xenosapient government identified. Native species identified. (See attachments)
Military potential is initially classified as low, to be revisited upon any new information which will be shared to all Confederacy governments as per treaties.
Chance for incursion into Confederate Space is high.
Place all rimward stations, colonies, planetary governments, and military forces on stage two alert. Do not fire unless unable to withdraw or casualties are incurred. Abide by Rules of Engagement for inferior forces unaware of Confederate military and industrial power.
-------NOTHING FOLLOWS-----------
TRAENA'AD HIVE INTELLIGENCE
RE: Your Last
Let's hope we do better with them than when the two of us first met.
--------NOTHING FOLLOWS--------
submitted by Ralts_Bloodthorne to HFY [link] [comments]

CRTPi4-RCA v3.4FX - Composite TV-Out for your Pi4!

CRTPi Project Presents:

CRTPi4-RCA v3.4FX

A CRTPi image for running 240p via 3.5mm Composite on the Raspberry Pi4
Other Releases:
Changelog: v3.4FX for RCA (PAL Only) 5/18/2020
Changelog: v3.4FX for RCA (NTSC&&PAL) 5/17/2020
Changelog: v3.0F for RCA 5/11/2020
Changelog: v2.0F for RCA 4/1/2020
Changelog: v1.1FX 12/20/2019
Changelog: v1.0F Hotfix 10/31/2019
Changelog: v1.0F 10/29/2019
Changelog: v0.4 10/22/2019
Changelog: v0.3 10/2/2019
How does this even work!?
The amazing u/b0xspread has found a way to enforce modeswitching by watching the logs and processes, and continuing to enforce our desired mode long after the system wants to revert back. We're both expanding this scripting further to hopefully solve the same issues on the RGB and VGA forks -- but progress is slow due to the complex and varied nature of available resolution modes on those builds. But for now, let's just call this "black magic."
What Does That Look Like?
Here are some examples of games being played in beautiful 240p on CRT sets using the RCA Image!.
What is Different?
  • Retropie 4.6 (build 72132587 commit 05/07/20 Buster 10)
  • Retroarch 1.8.5
  • Full Apt-Upgrade for newest firmware and app dependancies (Recommended to repeat this function on your own Pi4)
  • 4GB (3872256 KB Uncompressed Image) (Compressed via WinRAR to 1043540KB)
  • SSH, Samba Share, and USB Rom Service enabled by default
  • Heavily modified Sakitoshi CRT-TVout script for switching between 480i and 240p
  • Further modified Sakitoshi script by u/b0xspread to allow video resolution switching on Pi4 Architecture
  • Optional overclock values in /boot/config.txt for Pi4 (disabled by default) [RECOMMENDED!]
  • NTSC @ 60hz 720/640x480 480i Resolution for Emulationstation & Kodi
  • PAL @ 50hz 720/640x576 576i Resolution for Emulationstation & Kodi
  • NTSC @ 60hz 640x480 Progressive (240 lines) for Retroarch
  • PAL @ 50hz 640x576 Progressive (288 lines) for Retroarch
  • Per-system custom refresh rates for Retroarch
  • Single-frame Run Ahead enabled for many 8-bit & 16-bit consoles and handhelds for Retroarch
  • Optional 480i mode for PSX and Arcade games
  • Preloaded with free 240p test suites for multiple consoles
  • Preloaded with additional stable (opt) Retroarch emulators
  • Preloaded with DOSBox and ScummVM
  • Preloaded with various 4:3 splashscreens from the RPiF download
  • Preloaded with 4:3 Ruckage's runcommand launching screens for supported systems
  • Custom 4:3 Arcade DOJ "Winners DO Use Drugs" splash screen.
  • Preloaded with MUNT Roland MT-32 MIDI emulation for DOSBox/ScummVM
  • Retroarch FCEUmm (NES) Emulator preconfigured for 4:3 horiz/vert overscan crop enabled w/ composite-direct-fbx pallete
  • Retroarch Picodrive (SMS/32X) Emulator preconfigured for 4:3 with 1X Sega Mastersystem & 1X Sega 32X resolution
  • Retroarch Gambatte (GB/GBC) emulator preset to Super Game Boy (Special 1 Pallete) mode with 2x integer scale SGB Overlay
  • Retroarch mGBA (GBA) emulator preset to Game Boy Player mode with 2x integer scale GBP Overlay
  • Other Retroarch handheld emulators preset for optimized wide display with overlay
  • Emulationstation preloaded with Ruckage's RetroPie menu icons
  • Emulationstation preloaded with Ruckage's snes-mini theme configured for 4:3
  • Custom ScummVM system artwork for snes-mini theme
  • Emulationstation systems ordered chronologically instead of alphabetically
  • Emulationstation preconfigured with best settings for analog A/V including best settings for video preview screensavers
What is Run-Ahead?
The Run Ahead feature calculates the frames as fast as possible in the background to "rollback" the action as close as possible to the input command requested.
I've enabled run-ahead on most of the 8 & 16-bit consoles and handhelds. A single frame (and using the second instance) is saved here, which dramatically improves input lag without affecting performance on a Pi3B+. More frames would require more hardware power, and may be achievable via overclocking.
lr-snes9x2010 consistent 60.0-60.2 FPS @ 60.098801hz lr-fceumm consistent 60.0-60.2 FPS @ 60.098801hz lr-beetle-pce-fast consistent 60.1-60.2 @ 60.000000hz lr-genesis-gx-plus consistent 59.9-60.2 FPS @ 59.922741hz (both genesis and sega cd) lr-picodrive consistent 59.9-60.2 FPS @ 59.922741hz (master system, game gear, and 32X) lr-gambatte consistent 60.0-60.2 FPS @ 60.098801hz (SGB2 framerate) lr-mgba consistent 59.8-60.4 FPS @ 60.002220hz (Gamecube framerate) 
Runahead Tested ~60FPS Stable:
  • Game Gear
  • Game Boy
  • Game Boy Color
  • Game Boy Advance
  • Master System
  • Megadrive
  • NES
  • PC Engine
  • PCE-CD
  • Sega 32X
  • Sega CD
  • SNES
Runahead Tested < 50FPS Unstable:
  • FB Neo
  • FB Alpha
  • Mame
  • N64
  • PlayStation
  • PSP
Runahead Untested:
  • Atari 800
  • Atari 2600
  • Atari 5200
  • Atari 7800
  • Atari Lynx
  • Coleco
  • Intellivision
  • MSX
What Does This NOT Have?
This doesn't have any ROMs (other than freeware test suites), BIOS files, music, screenshots, metadata, or videos concerning copywritten games. Other than the configurations and overlays, it has nothing that can't be downloaded through the repository or freeware.
Where Can I Get It?
You can download a premade image from Drive:
NOTE: Please expand your file system via Raspi-Config after your first boot, and reboot!
CRTPi4-RCA NTSC v3.4F: For Raspberry Pi4 Composite-Out @ 60hz
MD5: 7df8453c2e8029b06def7864351ec768 
CRTPi4-RCA PAL-D v3.4F: For Raspberry Pi4 Composite-Out @ 50hz
MD5: ab2bd6ab228bd6f58a22de15044fb46a 
How do I install the Arcade Configuration Pack?
These are the resolution-correct preset arcade configs for MAME/FBA including vertical games. There is roughly 38K files in there, spread out across several systems (arcade, fba, mame-libretro, and neogeo). Having these pre-installed would not allow either image to fit on the SD card used, and may not be needed for everyone. It's a fairly simple process that won't take more than a few minutes of your time.
  • Drop to shell or connect via SSH, and navigate to root (cd /)
  • Download the CRTPi-RCA_ArcadePack.zip with the command:
    sudo wget https://github.com/crtpi/CRTPi-Project/raw/masteCRTPi-RCA_ArcadePack.zip
  • Unzip and overwrite files with the command:
    sudo unzip -o -q CRTPi-RCA_ArcadePack.zip
  • Remove the zip with the command
    sudo rm CRTPi-RCA_ArcadePack.zip
  • Restore read/write access to the files you have overwritten with the command:
    sudo chmod a+rw -R /opt/retropie/configs/
How can I take full advantage of the 480i/240p Switching?
To force 480i for a system or game, you can create a '480i.txt' file inside the configuration folder of the system with a list of the file names (case insensitive, extension optional but recommended) you want to force.
If you wish to force 480i for a whole system, you can write "all" inside the '480i.txt' file.
Alternatively you can create a "240p.txt" file to force 480i to all games except for the ones inside the list.
You can read more about the script functionality here.
Example:
/opt/retropie/configs/psx/480i.txt containing "Bloody Roar 2.PBP" to force 480i for the file "Bloody Roar 2.PBP" /opt/retropie/configs/psx/480i.txt containing "all" to force 480i for all the PlayStation games. /opt/retropie/configs/ports/kodi/480i.txt containing "all" to force 480i on Kodi. 
I have X Issue! Help?
Why isn't there a Pi4 PAL version?
Try as I might, I have been unable to get a PAL signal out of the SDTV port on a Pi4. My BVM displays PAL-S and PAL-D fine, but neither will get anything but static. I don't even get a rolling B&W image, just horrible static. If you figure out a way, let me know!
I only have like 500mb of free space on my XXgb SD card!
You need to expand your file system via Raspi-Config. Follow these steps.
I want to switch back to lr-mupen64plus!
  • When launching an n64 game, mash buttons on the controller until the runcommand window comes up.
  • Select on "1 Set default emulator for n64" and choose "lr-mupen64plus"
  • Then "Q Exit (without launching)"
  • Launch the game again -- it will launch in the chosen emulator at the proper resolution
What A/V cable should I use for 3.5mm Composite?
I recommend the Zune A/V cable or XBOX 360E cable, you can find them on eBay and Amazon.
Samba Share won't work after I set up Wi-Fi!
Samba share service starts on boot, pending that a network is available. Configure your Wi-Fi then reboot first, and if that doesn't fix it then go into Retropie Setup > Configuration/Tools > Samba > Install Samba. Once it's complete, reboot and it should be golden.
USB-Romservice and/or Retropie-Mount don't work!
Follow this guide, but follow these steps before plugging in your thumb drive:
  • Go to Retropie-Setup
  • Update retropie install script
  • Go to Manage Packages -> Optional Packages
  • Scroll all the way down to usbromservice
  • Uninstall usbromservice
  • Install it again from Binary
  • Once finished, choose Configuration, then Enable USB Romservice
  • Reboot, and wait for it to fully boot in to ES
  • Plug in USB stick (has to be FAT32) and WAIT A LONG TIME (if your stick has a light, wait for it to stop flashing)
submitted by ErantyInt to u/ErantyInt [link] [comments]

CRTPi4-RCA v3.4FX - Composite TV-Out for your Pi4!

CRTPi Project Presents:

CRTPi4-RCA v3.4FX

A CRTPi image for running 240p via 3.5mm Composite on the Raspberry Pi4
Other Releases:
Changelog: v3.4FX for RCA (PAL Only) 5/18/2020
Changelog: v3.4FX for RCA (NTSC&&PAL) 5/17/2020
Changelog: v3.0F for RCA 5/11/2020
Changelog: v2.0F for RCA 4/1/2020
Changelog: v1.1FX 12/20/2019
Changelog: v1.0F Hotfix 10/31/2019
Changelog: v1.0F 10/29/2019
Changelog: v0.4 10/22/2019
Changelog: v0.3 10/2/2019
How does this even work!?
The amazing u/b0xspread has found a way to enforce modeswitching by watching the logs and processes, and continuing to enforce our desired mode long after the system wants to revert back. We're both expanding this scripting further to hopefully solve the same issues on the RGB and VGA forks -- but progress is slow due to the complex and varied nature of available resolution modes on those builds. But for now, let's just call this "black magic."
What Does That Look Like?
Here are some examples of games being played in beautiful 240p on CRT sets using the RCA Image!.
What is Different?
  • Retropie 4.6 (build 72132587 commit 05/07/20 Buster 10)
  • Retroarch 1.8.5
  • Full Apt-Upgrade for newest firmware and app dependancies (Recommended to repeat this function on your own Pi4)
  • 4GB (3872256 KB Uncompressed Image) (Compressed via WinRAR to 1043540KB)
  • SSH, Samba Share, and USB Rom Service enabled by default
  • Heavily modified Sakitoshi CRT-TVout script for switching between 480i and 240p
  • Further modified Sakitoshi script by u/b0xspread to allow video resolution switching on Pi4 Architecture
  • Optional overclock values in /boot/config.txt for Pi4 (disabled by default) [RECOMMENDED!]
  • NTSC @ 60hz 720/640x480 480i Resolution for Emulationstation & Kodi
  • PAL @ 50hz 720/640x576 576i Resolution for Emulationstation & Kodi
  • NTSC @ 60hz 640x480 Progressive (240 lines) for Retroarch
  • PAL @ 50hz 640x576 Progressive (288 lines) for Retroarch
  • Per-system custom refresh rates for Retroarch
  • Single-frame Run Ahead enabled for many 8-bit & 16-bit consoles and handhelds for Retroarch
  • Optional 480i mode for PSX and Arcade games
  • Preloaded with free 240p test suites for multiple consoles
  • Preloaded with additional stable (opt) Retroarch emulators
  • Preloaded with DOSBox and ScummVM
  • Preloaded with various 4:3 splashscreens from the RPiF download
  • Preloaded with 4:3 Ruckage's runcommand launching screens for supported systems
  • Custom 4:3 Arcade DOJ "Winners DO Use Drugs" splash screen.
  • Preloaded with MUNT Roland MT-32 MIDI emulation for DOSBox/ScummVM
  • Retroarch FCEUmm (NES) Emulator preconfigured for 4:3 horiz/vert overscan crop enabled w/ composite-direct-fbx pallete
  • Retroarch Picodrive (SMS/32X) Emulator preconfigured for 4:3 with 1X Sega Mastersystem & 1X Sega 32X resolution
  • Retroarch Gambatte (GB/GBC) emulator preset to Super Game Boy (Special 1 Pallete) mode with 2x integer scale SGB Overlay
  • Retroarch mGBA (GBA) emulator preset to Game Boy Player mode with 2x integer scale GBP Overlay
  • Other Retroarch handheld emulators preset for optimized wide display with overlay
  • Emulationstation preloaded with Ruckage's RetroPie menu icons
  • Emulationstation preloaded with Ruckage's snes-mini theme configured for 4:3
  • Custom ScummVM system artwork for snes-mini theme
  • Emulationstation systems ordered chronologically instead of alphabetically
  • Emulationstation preconfigured with best settings for analog A/V including best settings for video preview screensavers
What is Run-Ahead?
The Run Ahead feature calculates the frames as fast as possible in the background to "rollback" the action as close as possible to the input command requested.
I've enabled run-ahead on most of the 8 & 16-bit consoles and handhelds. A single frame (and using the second instance) is saved here, which dramatically improves input lag without affecting performance on a Pi3B+. More frames would require more hardware power, and may be achievable via overclocking.
lr-snes9x2010 consistent 60.0-60.2 FPS @ 60.098801hz lr-fceumm consistent 60.0-60.2 FPS @ 60.098801hz lr-beetle-pce-fast consistent 60.1-60.2 @ 60.000000hz lr-genesis-gx-plus consistent 59.9-60.2 FPS @ 59.922741hz (both genesis and sega cd) lr-picodrive consistent 59.9-60.2 FPS @ 59.922741hz (master system, game gear, and 32X) lr-gambatte consistent 60.0-60.2 FPS @ 60.098801hz (SGB2 framerate) lr-mgba consistent 59.8-60.4 FPS @ 60.002220hz (Gamecube framerate) 
Runahead Tested ~60FPS Stable:
  • Game Gear
  • Game Boy
  • Game Boy Color
  • Game Boy Advance
  • Master System
  • Megadrive
  • NES
  • PC Engine
  • PCE-CD
  • Sega 32X
  • Sega CD
  • SNES
Runahead Tested < 50FPS Unstable:
  • FB Neo
  • FB Alpha
  • Mame
  • N64
  • PlayStation
  • PSP
Runahead Untested:
  • Atari 800
  • Atari 2600
  • Atari 5200
  • Atari 7800
  • Atari Lynx
  • Coleco
  • Intellivision
  • MSX
What Does This NOT Have?
This doesn't have any ROMs (other than freeware test suites), BIOS files, music, screenshots, metadata, or videos concerning copywritten games. Other than the configurations and overlays, it has nothing that can't be downloaded through the repository or freeware.
Where Can I Get It?
You can download a premade image from Drive:
NOTE: Please expand your file system via Raspi-Config after your first boot, and reboot!
CRTPi4-RCA NTSC v3.4F: For Raspberry Pi4 Composite-Out @ 60hz
MD5: 7df8453c2e8029b06def7864351ec768 
CRTPi4-RCA PAL-D v3.4F: For Raspberry Pi4 Composite-Out @ 50hz
MD5: ab2bd6ab228bd6f58a22de15044fb46a 
How do I install the Arcade Configuration Pack?
These are the resolution-correct preset arcade configs for MAME/FBA including vertical games. There is roughly 38K files in there, spread out across several systems (arcade, fba, mame-libretro, and neogeo). Having these pre-installed would not allow either image to fit on the SD card used, and may not be needed for everyone. It's a fairly simple process that won't take more than a few minutes of your time.
  • Drop to shell or connect via SSH, and navigate to root (cd /)
  • Download the CRTPi-RCA_ArcadePack.zip with the command:
    sudo wget https://github.com/crtpi/CRTPi-Project/raw/masteCRTPi-RCA_ArcadePack.zip
  • Unzip and overwrite files with the command:
    sudo unzip -o -q CRTPi-RCA_ArcadePack.zip
  • Remove the zip with the command
    sudo rm CRTPi-RCA_ArcadePack.zip
  • Restore read/write access to the files you have overwritten with the command:
    sudo chmod a+rw -R /opt/retropie/configs/
How can I take full advantage of the 480i/240p Switching?
To force 480i for a system or game, you can create a '480i.txt' file inside the configuration folder of the system with a list of the file names (case insensitive, extension optional but recommended) you want to force.
If you wish to force 480i for a whole system, you can write "all" inside the '480i.txt' file.
Alternatively you can create a "240p.txt" file to force 480i to all games except for the ones inside the list.
You can read more about the script functionality here.
Example:
/opt/retropie/configs/psx/480i.txt containing "Bloody Roar 2.PBP" to force 480i for the file "Bloody Roar 2.PBP" /opt/retropie/configs/psx/480i.txt containing "all" to force 480i for all the PlayStation games. /opt/retropie/configs/ports/kodi/480i.txt containing "all" to force 480i on Kodi. 
I have X Issue! Help?
Why isn't there a Pi4 PAL version?
Try as I might, I have been unable to get a PAL signal out of the SDTV port on a Pi4. My BVM displays PAL-S and PAL-D fine, but neither will get anything but static. I don't even get a rolling B&W image, just horrible static. If you figure out a way, let me know!
I only have like 500mb of free space on my XXgb SD card!
You need to expand your file system via Raspi-Config. Follow these steps.
I want to switch back to lr-mupen64plus!
  • When launching an n64 game, mash buttons on the controller until the runcommand window comes up.
  • Select on "1 Set default emulator for n64" and choose "lr-mupen64plus"
  • Then "Q Exit (without launching)"
  • Launch the game again -- it will launch in the chosen emulator at the proper resolution
What A/V cable should I use for 3.5mm Composite?
I recommend the Zune A/V cable or XBOX 360E cable, you can find them on eBay and Amazon.
Samba Share won't work after I set up Wi-Fi!
Samba share service starts on boot, pending that a network is available. Configure your Wi-Fi then reboot first, and if that doesn't fix it then go into Retropie Setup > Configuration/Tools > Samba > Install Samba. Once it's complete, reboot and it should be golden.
USB-Romservice and/or Retropie-Mount don't work!
Follow this guide, but follow these steps before plugging in your thumb drive:
  • Go to Retropie-Setup
  • Update retropie install script
  • Go to Manage Packages -> Optional Packages
  • Scroll all the way down to usbromservice
  • Uninstall usbromservice
  • Install it again from Binary
  • Once finished, choose Configuration, then Enable USB Romservice
  • Reboot, and wait for it to fully boot in to ES
  • Plug in USB stick (has to be FAT32) and WAIT A LONG TIME (if your stick has a light, wait for it to stop flashing)
submitted by ErantyInt to crtgaming [link] [comments]

CRTPi-RGB v3.0 - Buster Busts Loose!

CRTPi Project Presents:

CRTPi-RGB v3.0

A CRTPi image for running 240p via GPIO RGB DAC Hats
Other Releases:
Changelog: v3.0 for 888 & 666 05/12/2020 - Emergency Fixes
Changelog: v3.0 for 888 & 666 05/08/2020
Changelog: v2.0 for 888 & 666 03/25/2020
Changelog: v1.1X for 666 12/20/2019
Changelog: v1.1X for 888 & 666 12/19/2019
Changelog: v1.0 for 888 & 666 11/7/2019
Changelog: v1.0 for 666 10/24/2019
Changelog: v1.0 for 888 & 666 10/22/2019
Changelog: v0.3 for 888 & 666 10/2/2019
Changelog: v0.2 for 888 09/27/2019
Changelog: v0.1 for 888 09/20/2019
Required Hardware:
What is a RetroTINK? Or a VGA666?
RetroTINK is a GPIO hat for the Raspberry Pi3/3B+ that converts digital video signal back into 24-bit analog. It provides output over RCA, S-Video, Component, and VGA -- as well as supporting CSYNC, super-resolutions, and custom resolution timings.
VGA666 is a GPIO hat for the Raspberry Pi that converts digital video signal back into an 18-bit analog out via VGA. It also allows for super-resolutions and custom resolution timings.
Pi2SCART is a GPIO hat for the Raspberry Pi that converts digital video signal back into an 18-bit analog RGB out via SCART. It also allows for super-resolutions and custom resolution timings.
What Does That Even Mean?
It makes your Pi capable of outputting a true 240p analog signal for CRT televisions and monitors, and is capable of 5x (1600x240) and higher super resolutions.
What Does That Look Like?
I don't have the greatest pics saved for comparison, but here's some examples of the 888.
What is Different? (888 & 666)
  • Retropie 4.6 (build 7c5e31bb commit 05/07/20 Buster 10)
  • Retroarch 1.8.5
  • 4GB (3872256 KB) Uncompressed Image (Compressed via WinRAR to 982256 KB)
  • SSH, Samba Share, and USB Rom Service enabled by default
  • Custom /boot/config.txt settings for DPI output and custom HDMI timings
  • Optional overclock values in /boot/config.txt for Pi2 & Pi3B (disabled by default)
  • Modified Michael Vencio's Runcommand “On Start” and “On End” scripts to automatically change the resolution system-by-system and game-by-game
  • Modified Runcommand "On Start" script to allow creation of game-specific arcade configs for arcade/fba/mame-libretro/neogeo
  • NTSC @ 60hz 320x240 resolution for Emulationstation and DOSBox/ScummVM/Kodi
  • NTSC @ 60hz 2048x240, 1920x240, and 1600x240 resolution for Retroarch
  • Per-system custom refresh rates for Retroarch
  • Single-frame Run Ahead enabled for many 8-bit & 16-bit consoles and handhelds for Retroarch
  • Preloaded with free 240p test suites for multiple consoles with art by chipsnblip
  • Preloaded with additional stable (opt) Retroarch emulators
  • Preloaded with DOSBox and ScummVM
  • Preloaded with various 4:3 splashscreens from the RPiF download
  • Custom 4:3 Arcade DOJ "Winners DO Use Drugs" splash screen.
  • Preloaded with MUNT Roland MT-32 MIDI emulation for DOSBox/ScummVM
  • Preloaded with custom runcommand launching screens for supported systems
  • Preconfigured MOST Retroarch emulators for proper Integer Scale SuperRes
  • Retroarch FCEUmm (NES) Emulator preconfigured for 8:7 vert overscan crop enabled w/ composite-direct-fbx palette
  • Retroarch Gambatte (GB/GBC) emulator preset to Super Game Boy (SGB2 auto coloration) mode with Integer Scale Overlay
  • Retroarch mGBA (GBA) emulator preset to Game Boy Player mode with Integer Scale Overlay
  • Emulationstation preloaded with Ruckage's RetroPie menu icons
  • Emulationstation preloaded with Ruckage's snes-mini (default) and nes-mini themes configured for 4:3
  • Custom ScummVM system artwork for snes-mini theme
  • Emulationstation systems ordered chronologically instead of alphabetically
  • Emulationstation preconfigured with best settings for analog A/V including best settings for video preview screensavers
  • Custom Retropie menu scripts for switching between Retrotink and VGA666-based hardware ___
What is Run-Ahead?
The Run Ahead feature calculates the frames as fast as possible in the background to "rollback" the action as close as possible to the input command requested.
I've enabled run-ahead on most of the 8 & 16-bit consoles and handhelds. A single frame (and using the second instance) is saved here, which dramatically improves input lag without affecting performance on a Pi3B. More frames would require more hardware power, and may be achievable via overclocking.
lr-snes9x2010 consistent 60.0-60.2 FPS @ 60.098801hz lr-fceumm consistent 60.0-60.2 FPS @ 60.098801hz lr-beetle-pce-fast consistent 60.1-60.2 @ 60.000000hz lr-genesis-gx-plus consistent 59.9-60.2 FPS @ 59.922741hz (both genesis and sega cd) lr-picodrive consistent 59.9-60.2 FPS @ 59.922741hz (master system, game gear, and 32X) lr-gambatte consistent 60.0-60.2 FPS @ 60.098801hz (SGB2 framerate) lr-mgba consistent 59.8-60.4 FPS @ 60.002220hz (Gamecube framerate) 
To disable runahead for a game (or emulator):
Quick Menu > Latency > Run-Ahead to Reduce Latency > OFF 
What about your new Per-Game Configs and Snap-Shader?
The RGB and VGA forks are now utilizing Snap-Shader, plus a newly-enhanced runcommand-onstart script, with provision for user-specified per-game configuration!
Here's the new script:
https://github.com/crtpi/CRTPi-Project/blob/masteRGB-to_opt/retropie/configs/all/runcommand-onstart.sh 
Here's information about Snap-Shader:
https://github.com/ektgit/snap-shader-240p 
And here's a quick rundown on how it works:
Not only does the new script carry forward the per-core scripting for 2048x / 1920x / and 1600x resolutions -- but adds per-game scripting by adding a text file to the system config and naming the rom(s) within the file. This allows you to force 2048x on a system that defaults to 1920x. This is especially useful for PSX, FDS, PCE/PCE-CD, and MAME for the few games that are 256 or 512 wide. Below are some example config files:
/opt/retropie/conifgs/psx/256.txt
Brave Prove Castlevania - Symphony of the Night Crash Bandicoot Final Fantasy Origins Final Fantasy Tactics 
/opt/retropie/conifgs/megadrive/256.txt
Bubble And Squeak Bubsy in - Claws Encounters of the Furred Kind Bugs Bunny in Double Trouble Caesars Palace Captain America and the Avengers 
/opt/retropie/conifgs/fds/320.txt
Akumajou Dracula Donkey Kong Otocky Super Mario Brothers 2 
You get the jist. It doesn't need an extension, not case sensitive, but should match the ROM name (including punctuation) exactly. This forces them to launch in 2048x240p instead of the default 1920x240p. This gives the end user full control on a game-per-game basis over the horizontal integer. You'll still need to write a retroarch game config to override the defaults there, but this at least gets you the right field. For games with odd/shifting vertical resolutions (like Chrono Cross, Battle Arena Toshinden, Castlevania SotN, etc.), a single pass of snap-shader is applied (snap-basic, nearest neighbor filtering, and "don't care" scale).
What Does This NOT Have?
This doesn't have any ROMs (other than freeware test suites), BIOS files, music, screenshots, metadata, or videos concerning copy-written games. Other than the configurations and overlays, it has nothing that can't be downloaded through the repository or freeware.
Where Can I Get It?
You can download a premade image from Google Drive:
NOTE: Please expand your file system via Raspi-Config after your first boot, and reboot!
CRTPi-RGB v3.0: For Pi3B/3B+ with Retrotink, Pi2SCART, RGB-Pi, or VGA666
MD5: d9d28f5ae8fe5cc829348be4b5a103fc 
Install Instructions:
For Retrotink Ultimate:
  • Download image and unRAR it.
  • Flash to your SD card with Win32DiskImager or Etcher.
  • Boot as normal, run Raspi-Config, and choose Expand Filesystem from Advanced Options.
  • Reboot from Raspi-Config, and enjoy your Pi!
For Pi2SCART/RGB-Pi/VGA666:
  • Download image and unRAR it.
  • Flash to your SD card with Win32DiskImager or Etcher.
  • BEFORE BOOTING Edit 'config.txt' on your SD card's BOOT partition, uncomment the section relevant to your device, and comment all other devices.
    ## Pi2SCART & VGA666 only!!
    #dtoverlay=vga666
    #hdmi_timings=320 1 16 30 34 240 1 2 3 22 0 0 0 60 0 6400000 1 #Pi2SCART/VGA666 [email protected]
    __
    ## RGB-Pi only!!
    #dtoverlay=pwm-2chan,pin=18,func=2,pin2=19,func2=2
    #dtoverlay=rgb-pi
    #dpi_output_format=6
    #hdmi_timings=320 1 16 30 34 240 1 2 3 22 0 0 0 60 0 6400000 1 #RGB-Pi [email protected]
    __
    ## RetroTINK Ultimate only!!
    #dtoverlay=dpi24
    #dpi_output_format=519
    #hdmi_timings=320 1 23 30 34 240 1 4 3 15 1 0 0 60 0 6400000 1 #RetroTINK [email protected]
__
  • Boot as normal, run Raspi-Config, and choose Expand Filesystem from Advanced Options, then reboot.
  • In Emulationstation, run "Enable VGA666" from the Retropie menu.
  • Your system will automatically reboot. Enjoy your Pi!
To Revert VGA666 to Retrotink Settings
  • In Emulationstation, run "Enable Retrotink" from the Retropie menu.
  • Your system will automatically reboot with the new settings.
Default Retroarch Keyboard Hotkeys
*SPACE: Enable Hotkey* F1 Menu F2 FF Toggle F3 Reset F4 Cheat Toggle F5 Save State F6 Load State F7 Change State - F8 Change State + F9 Screenshot F10 Mute ENTER: Exit 
I have X Issue! Help?
I only have like 500mb of free space on my XXgb SD card!
You need to expand your file system via Raspi-Config. Follow these steps.
Samba Share won't work after I set up Wi-Fi!
Samba share service starts on boot, pending that a network is available. Configure your Wi-Fi then reboot first, and if that doesn't fix it then go into Retropie Setup > Configuration/Tools > Samba > Install Samba. Once it's complete, reboot and it should be golden.
USB-Romservice and/or Retropie-Mount don't work!
Follow this guide, but follow these steps before plugging in your thumb drive:
  • Go to Retropie-Setup
  • Update retropie install script
  • Go to Manage Packages -> Optional Packages
  • Scroll all the way down to usbromservice
  • Uninstall usbromservice
  • Install it again from Binary
  • Once finished, choose Configuration, then Enable USB Romservice
  • Reboot, and wait for it to fully boot in to ES
  • Plug in USB stick (has to be FAT32) and WAIT A LONG TIME (if your stick has a light, wait for it to stop flashing)
Timings for Boot and Runcommand
320 x 240p @ 60hz Timings: Emulationstation, DOSBox, ScummVM, etc.
320 1 15 30 42 240 1 4 3 15 1 0 0 60 0 6400000 1 Retrotink 320x240p Timing 320 1 16 30 34 240 1 2 3 22 0 0 0 60 0 6400000 1 #VGA666 320x240p Timing 
Integer Scale Super-Resolution 240p @ 60hz Timings: All Retroarch Emulators
2048 1 160 202 320 240 1 3 5 14 0 0 0 60 0 42954545 1 #256x240/224p 1920 1 137 247 295 240 1 3 7 12 0 0 0 60 0 40860000 1 #320x240/224p 1600 1 73 157 204 240 1 4 3 15 0 0 0 60 0 32000000 1 #320x240/224p Alternate 
submitted by ErantyInt to u/ErantyInt [link] [comments]

Best Binary Option 99% Perfect Signal Indicator  100% Working Indicator Free Download !! 2019 BINARY OPTIONS STRATEGY Easy Binary Options Strategy 2020 BINARY SIGNAL SOFTWARE // 90 % ACCURATE WINS//SIGNALS PROVIDER Signal For binary option 100% Acurate  Trading in Real Account  iq option strategy 2019 Binary Options Trading Signals - YouTube

MyChargeBack.com are a firm specialising in helping victims of binary options fraud. They help claimants to explain the incident to the bank or credit card company, so that they fully understand what has happened. Some banks are unaware of binary trading and are unwilling to listen to claims. MyChargeBack help in this situation. Get 100% Free Trading Signals Forex, Binary Options, Stock & Commodities - Best interactive Brokers, news, webinars and day trading strategies. The third option which I would recommend, is the professional option. Which is seven dollars for seven days and then 197 dollars a quarter. The reason I would recommend this one is, if you do plan on using up down signals you gonna save about four hundred dollars a year doing the professional option. ADS Securities was founded in Abu Dhabi back in 2011, with an initial capital investment of $400 million. Since its initial incorporation, the company has grown to now become a global brand with entities in the UK, Hong Kong, and the UAE. Each of its entities are locally regulated. ADS securities boast of being able Anyoption deliver an excellent trading platform, and that is backed up with an equally good mobile app. As one of the pioneers of binary trading, they continue to improve the offering – the most recent addition being the new “Bubbles” option type which is unique in the industry at present.

[index] [24987] [11387] [23586] [2353] [17008] [20518] [13868] [25213] [17836] [1761]

Best Binary Option 99% Perfect Signal Indicator 100% Working Indicator Free Download !! 2019

Toady i will share you "Best Binary Option 99% Perfect Signal Indicator" Characteristics of Best IQ Option, Olymp Trade, binomo, Pocket Option 99% Perfect Signal Indicator 1. Platform - Metatrader4 2. Get YouTube without the ads. Working... Skip trial 1 month free. ... iq option winning strategy - free live signal for all binary option and forex and nadex - Duration: 19:30. So, test these signals and write in comments how you like it. Unfortunately, we have removed about 10 videos and I feel very sorry. IQ Option has reported my videos, because they changed the ... Stop wasting your money for nothing if you are suffering and couldn't make money from binary option you have only 1 choice to Gain Gross profits. ... Binary Option Best Signals Service In 2020 ... The binary options trade signals from Saturn PRO are still on fire. We are now on our 16th day of positive trading wins, with our worse da... Binary Options Trading Signals uploaded a video 6 ...

Flag Counter