Hello, new here, and need best recommandations.

Are you new to 6502, NES, or even programming in general? Post any of your questions here. Remember - the only dumb question is the question that remains unasked.

Moderator: Moderators

DocWaluigean
Posts: 205
Joined: Sun Jun 17, 2018 6:41 pm

Re: Hello, new here, and need best recommandations.

Post by DocWaluigean »

tepples wrote:
DocWaluigean wrote:If I can't make up names for codes, there's chances for me [or anyone] to forget connective mnemonics for me [or anyone] to understand or recognize the opcodes or other words. I would've struggle more with ,x / ,y / ,a if I never made up the name, "Charter Comma".
Would "index comma" have worked?
Not likely, because I [or others] may get fixated on Index Finger or other terms I somehow failed to remember about. If I think about Index, maybe I'm thinking about a type of word-map of where the name, pages, etc. goes, but they called it Glossary? or possibly something geometry or mathematics.
Quite the contrary! It's better to study/dissect/break a known good template to figure it out than start from nothing without knowing what to do. You need quite a bit of knowledge about the NES architecture and how assemblers work to be able to create a valid .NES file on your own from scratch, and most newbies *don't* have that knowledge. You can't become a painter only from studying how paints and paintbrushes work, you have to see how other painters do it in practice.
So which template is the best of the best, yet most basic, to start off?

Also, I'm having little trouble downloading ASM6 and Notepad ++ for the .nes cmd stuff.
unregistered
Posts: 1318
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

Re: Hello, new here, and need best recommandations.

Post by unregistered »

asm6 download from nesdev wiki :)

Sorry, I don't remember loopy's new website url. (Maybe that's his new site... 3dscapture.com)

edit: I started our game's journey with "NES 101 Tutorial" by Michael Martin; however, I don't think any of his tutorial code exists in our game now. But, it was a very helpful start, for me, when I started to learn NES. :) Try searching nesdev wiki for NES 101 Tutorial

edit2.
Last edited by unregistered on Wed Oct 10, 2018 3:13 pm, edited 1 time in total.
DocWaluigean
Posts: 205
Joined: Sun Jun 17, 2018 6:41 pm

Re: Hello, new here, and need best recommandations.

Post by DocWaluigean »

unregistered wrote:asm6 download from nesdev wiki :)

Sorry, I don't remember loopy's new website url.

edit: I started our game's journey with "NES 101 Tutorial" by Michael Martin; however, I don't think any of his tutorial code exists in our game. But, it was a very helpful start, for me, when I beginning to learn NES. :)
Ah! Thank you very much! Although to be honest, I'm a little scared attempting to do this since I feel I may go insane or mad if I failed. ^^;
unregistered
Posts: 1318
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

Re: Hello, new here, and need best recommandations.

Post by unregistered »

I remember feeling that way too... but, I said a prayer and my heart was enveloped in peace. :) Hopefully, you'll be able to do this too.
DocWaluigean
Posts: 205
Joined: Sun Jun 17, 2018 6:41 pm

Re: Hello, new here, and need best recommandations.

Post by DocWaluigean »

unregistered wrote:I remember feeling that way too... but, I said a prayer and my heart was enveloped in peace. :) Hopefully, you'll be able to do this too.
As I believe you about religion, you gotta know that maybe[?] God want's us to do things ourselves for a while, like "Learn to take baby steps by yourself." So the prayer might annoy Him or Christ for abusing their helps? Sorry? Let's take it easy for now.

viewtopic.php?p=58138#p58138

According to this template, I am not sure which should I go specific on first. And which one I can disassemble to where I can open up with the fewest of fewest code possible.
unregistered
Posts: 1318
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

Re: Hello, new here, and need best recommandations.

Post by unregistered »

DocWaluigean wrote:
unregistered wrote:I remember feeling that way too... but, I said a prayer and my heart was enveloped in peace. :) Hopefully, you'll be able to do this too.
As I believe you about religion, you gotta know that maybe[?] God want's us to do things ourselves for a while, like "Learn to take baby steps by yourself." So the prayer might annoy Him or Christ for abusing their helps?
Read Phillipians 4:6-7 and notice that word "everything". :) I'm sorry again; in my quote above, my "this" was ment to only refer to what you were worried about doing; I should be more careful in my writting. :oops:


Sorry, I have to go.
DocWaluigean
Posts: 205
Joined: Sun Jun 17, 2018 6:41 pm

Re: Hello, new here, and need best recommandations.

Post by DocWaluigean »

unregistered wrote:
DocWaluigean wrote:
unregistered wrote:I remember feeling that way too... but, I said a prayer and my heart was enveloped in peace. :) Hopefully, you'll be able to do this too.
As I believe you about religion, you gotta know that maybe[?] God want's us to do things ourselves for a while, like "Learn to take baby steps by yourself." So the prayer might annoy Him or Christ for abusing their helps?
Read Phillipians 4:6-7 and notice that word "everything". :) I'm sorry again; in my quote above, my "this" was ment to only refer to what you were worried about doing; I should be more careful in my writting. :oops:


Sorry, I have to go.
Ah, I'm sorry. And it's alright. No need to apologize. I already and always forgiven you.

And it's alright. ttyl.

-

Code: Select all

;----------------------------------------------------------------
; constants
;----------------------------------------------------------------

PRG_COUNT = 1 ;1 = 16KB, 2 = 32KB
MIRRORING = %0001 ;%0000 = horizontal, %0001 = vertical, %1000 = four-screen
This is the NROM template. So I am not sure why there's no "ines." in beginning.

And constants ; does it also mean any letter of alphabet that is NOT vowels [A E I O U] ? EDIT: it's consonant, not constants. Alongside, constant would also mean "keep going" in certain words like, "At constant rate..."?

PRG COUNT as maximum byte for 32000 byte, huh. Is it possible to get 1MB [or 1GB for the master coder of all master coder of 6502 NES coder?] or 2MB of it? Like PRG_COUNT = 255?

With the %, I'm calling that it's binary.

So 1 is vertical, 0 is horizontal, and 8 is four-screen...? Is the "MIRRORING" the support code?
JRoatch
Formerly 43110
Posts: 422
Joined: Wed Feb 05, 2014 7:01 am
Contact:

Re: Hello, new here, and need best recommandations.

Post by JRoatch »

I'm assuming you got ASM6 to work. If not, I've prepared a video if you wish to see.
DocWaluigean wrote:

Code: Select all

;----------------------------------------------------------------
; constants
;----------------------------------------------------------------

PRG_COUNT = 1 ;1 = 16KB, 2 = 32KB
MIRRORING = %0001 ;%0000 = horizontal, %0001 = vertical, %1000 = four-screen
This is the NROM template. So I am not sure why there's no "ines." in beginning.
The actual iNES header is computed and written to the output file at the "iNES header" section.
That first part is there so that you can easily change some parts of the configuration without having to dig through the "iNES header" section
DocWaluigean wrote:PRG COUNT as maximum byte for 32000 byte, huh. Is it possible to get 1MB [or 1GB for the master coder of all master coder of 6502 NES coder?] or 2MB of it? Like PRG_COUNT = 255?
Not in this case. Because this is NROM, you can only choose 1 or 2 for PRG_COUNT.
DocWaluigean wrote:With the %, I'm calling that it's binary.
Correct
DocWaluigean wrote:So 1 is vertical, 0 is horizontal, and 8 is four-screen...? Is the "MIRRORING" the support code?
It's Mirroring as in Nametable Mirroring. The NES has memory to lay out 2 screens of tiles, but the NES can scroll to display varying amounts of 4 different screens. So this Mirroring setting tells the NES how to duplicate the 2 actual screens. Best to leave this at %0001 so you can have more horizontal space to work with later, because with a setting of %0000 one screen will be duplicated (or mirrored) in the horizontal direction.


If you wish to know where you code begins, it's at the "program bank(s)" section where the Reset: label is. The is where the CPU starts when the power button or the reset button is pressed. The reason this is so is because the address for the Reset: label is placed at $fffc in the "interrupt vectors" section.

One last thing to note is that because of the .incbin in the "CHR-ROM bank" section you'll need a 8KiB file for the 512 graphic tiles of CHR-ROM. If you just want a quick way to get a gray screen, we can replace the line .incbin "tiles.chr" with .dsb 8192, 0 to fill CHR-ROM with all blank tiles until we can make a tiles.chr file with a NES tile editing tool of some sort.
DocWaluigean
Posts: 205
Joined: Sun Jun 17, 2018 6:41 pm

Re: Hello, new here, and need best recommandations.

Post by DocWaluigean »

JRoatch wrote:I'm assuming you got ASM6 to work. If not, I've prepared a video if you wish to see.
DocWaluigean wrote:

Code: Select all

;----------------------------------------------------------------
; constants
;----------------------------------------------------------------

PRG_COUNT = 1 ;1 = 16KB, 2 = 32KB
MIRRORING = %0001 ;%0000 = horizontal, %0001 = vertical, %1000 = four-screen
This is the NROM template. So I am not sure why there's no "ines." in beginning.
The actual iNES header is computed and written to the output file at the "iNES header" section.
That first part is there so that you can easily change some parts of the configuration without having to dig through the "iNES header" section
DocWaluigean wrote:PRG COUNT as maximum byte for 32000 byte, huh. Is it possible to get 1MB [or 1GB for the master coder of all master coder of 6502 NES coder?] or 2MB of it? Like PRG_COUNT = 255?
Not in this case. Because this is NROM, you can only choose 1 or 2 for PRG_COUNT.
DocWaluigean wrote:With the %, I'm calling that it's binary.
Correct
DocWaluigean wrote:So 1 is vertical, 0 is horizontal, and 8 is four-screen...? Is the "MIRRORING" the support code?
It's Mirroring as in Nametable Mirroring. The NES has memory to lay out 2 screens of tiles, but the NES can scroll to display varying amounts of 4 different screens. So this Mirroring setting tells the NES how to duplicate the 2 actual screens. Best to leave this at %0001 so you can have more horizontal space to work with later, because with a setting of %0000 one screen will be duplicated (or mirrored) in the horizontal direction.


If you wish to know where you code begins, it's at the "program bank(s)" section where the Reset: label is. The is where the CPU starts when the power button or the reset button is pressed. The reason this is so is because the address for the Reset: label is placed at $fffc in the "interrupt vectors" section.

One last thing to note is that because of the .incbin in the "CHR-ROM bank" section you'll need a 8KiB file for the 512 graphic tiles of CHR-ROM. If you just want a quick way to get a gray screen, we can replace the line .incbin "tiles.chr" with .dsb 8192, 0 to fill CHR-ROM with all blank tiles until we can make a tiles.chr file with a NES tile editing tool of some sort.
Yes please. I'm so sorry for being delayance...

So NROM is a limited but beginner-friendly template.

Ahhh, like the "double screen same" from the debug style.

On the last one, I mean making gray screen but with 100% code-placement friendly, like a piece of paper, and a pencil, and ready to "code" by drawing.
JRoatch
Formerly 43110
Posts: 422
Joined: Wed Feb 05, 2014 7:01 am
Contact:

Re: Hello, new here, and need best recommandations.

Post by JRoatch »

DocWaluigean wrote:
JRoatch wrote:I'm assuming you got ASM6 to work. If not, I've prepared a video if you wish to see.
Yes please. I'm so sorry for being delayance...
How to use asm6.exe on windows 10.
Please excuse my accent. I'm not good with a microphone, and at times I could be mistaken for the english dub of Dr. Light from megaman 8. I hope you can follow along anyway. Let me know if this is actually harder to understand then just reading text.
DocWaluigean wrote:So NROM is a limited but beginner-friendly template.
Being that it represents the most basic hardware configuration, it would be beginner-friendly.
DocWaluigean wrote:On the last one, I mean making gray screen but with 100% code-placement friendly, like a piece of paper, and a pencil, and ready to "code" by drawing.
Once asm6.exe is working, you'll copy and paste the whole NROM template into your asm6.exe input file ("input.txt" in my video) and for your Command Prompt window type asm6.exe input.txt output.nes. If that works the file output.nes will be a valid nes rom and will successfully load and run in a emulator.

From there your code will begin at where the Reset: label is.
DocWaluigean
Posts: 205
Joined: Sun Jun 17, 2018 6:41 pm

Re: Hello, new here, and need best recommandations.

Post by DocWaluigean »

JRoatch wrote:
DocWaluigean wrote:
JRoatch wrote:I'm assuming you got ASM6 to work. If not, I've prepared a video if you wish to see.
Yes please. I'm so sorry for being delayance...
How to use asm6.exe on windows 10.
Please excuse my accent. I'm not good with a microphone, and at times I could be mistaken for the english dub of Dr. Light from megaman 8. I hope you can follow along anyway. Let me know if this is actually harder to understand then just reading text.
DocWaluigean wrote:So NROM is a limited but beginner-friendly template.
Being that it represents the most basic hardware configuration, it would be beginner-friendly.
DocWaluigean wrote:On the last one, I mean making gray screen but with 100% code-placement friendly, like a piece of paper, and a pencil, and ready to "code" by drawing.
Once asm6.exe is working, you'll copy and paste the whole NROM template into your asm6.exe input file ("input.txt" in my video) and for your Command Prompt window type asm6.exe input.txt output.nes. If that works the file output.nes will be a valid nes rom and will successfully load and run in a emulator.

From there your code will begin at where the Reset: label is.
I thank you so much for the video tutorial. Really.

I won't go much details on why absences. Let's say that I have rough time smiling for months. So...

viewtopic.php?f=10&t=17454&start=270

According to the long list of reviewing what I [hopefully we] learnt, I feel I need to try and write this down for attempting to imagine something so if cartoons for 6502 learning works:

- Number system of Binary = Playing with a giant block like Croquet sport, where block turns from 0 to 1 somewhat.

- LDAXY / STAXY = A crane machine where A is Red, X is Blue, and Y is Yellow, and the fluffy bunny doll represent numbers and what it does. [A fluffy bunny represent the sprite code for the main character which is the fluffy bunny.]

- Register = ???????????? [To be edited]

- TAX / TAY = A same crane that can be given number or decimals to each others. The prize is actually radioactive nitroglycerin, and cannot be in same room with X and Y togather, hence it only transfer between A and X or A and Y.

- INC / DEC = simple scene of math plus and minus, just comedic references about being too smart and Oxford about it.

- JMP = ??????? [ To be edited. Something about using countries and continent as a references??]

- BEQ / BNE / ... = ?!?!?!?!?! [Most recent issues, it could be inspector or legal police officer, or the alerter scenes about how it works.] [To be edited.]

---

I feel I got certain jots down a little while. I hope I do not get penalize for long term issues. It will take me a while a LITTLE while to re-assume what to learn about the inside the NROM header thingy.[? or the templates?]
pwnskar
Posts: 119
Joined: Tue Oct 16, 2018 5:46 am
Location: Gothenburg, Sweden

Re: Hello, new here, and need best recommandations.

Post by pwnskar »

As a relatively new nesdever I'd recommend not worrying too much about tools in the beginning. You will gain a better understanding of how things are put together the longer you keep things basic. Following a simple tutorial with whatever tools used there will be enough to get you started. It's gonna take time but so does anything worth pursuing, right? :)
JRoatch
Formerly 43110
Posts: 422
Joined: Wed Feb 05, 2014 7:01 am
Contact:

Re: Hello, new here, and need best recommandations.

Post by JRoatch »

DocWaluigean wrote: - LDAXY / STAXY = A crane machine where A is Red, X is Blue, and Y is Yellow, and the fluffy bunny doll represent numbers and what it does. [A fluffy bunny represent the sprite code for the main character which is the fluffy bunny.]

- Register = ???????????? [To be edited]

- TAX / TAY = A same crane that can be given number or decimals to each others. The prize is actually radioactive nitroglycerin, and cannot be in same room with X and Y togather, hence it only transfer between A and X or A and Y.

...

I feel I got certain jots down a little while. I hope I do not get penalize for long term issues. It will take me a while a LITTLE while to re-assume what to learn about the inside the NROM header thingy.[? or the templates?]
Welcome back.

Going with your crane machine analogy a Register would be the chute where the bunny is dropped at (but read on on why this description may be flawed), and JMP and Bxx would be oddly affecting the crane operator/player somehow?


I think most object analogies like this crane machine confuses one important fact about how the CPU works: Every tiny operation that's called a "move" or a "transfer" is actually copying.

In real life (as we all know) when a thing moves from one spot to another that thing no longer exists at the old location.
In the computer realm, the action that we call "moving" leaves the old pattern of bits exactly as it is, while causing the pattern of bits in the new location to be same as the old.

You could think of this a having many chalkboards (or just a single chalkboard divided up).
So to move a number from chalkboard X to chalkboard Y, chalkboard Y must first be erased then the number in chalkboard X is read and written to chalkboard Y.
You may think the CPU could just erase chalkboard X automatically after the copy, but that's a waste of real mechanical effort, so the old chalkboard X remains the same.

There was one part of an old book I used to read as a child that helped me really understand how the CPU of computers really function.
The book was Usborne Guide to Computers: A simple and colourful introduction for beginners
and in it there was 2 pages describing an activity where you cut out a long strip of paper with simple instructions and that long strip was feed through a small paper view, and you followed the instructions in that view which included steps like moving the viewer to a numbered part of the paper strip. http://www.asciimation.co.nz/bb/wpg2?g2_itemId=5489

I can't seem to find the book any more, but I found a through review of it at http://www.asciimation.co.nz/bb/2013/10 ... -computers
DocWaluigean
Posts: 205
Joined: Sun Jun 17, 2018 6:41 pm

Re: Hello, new here, and need best recommandations.

Post by DocWaluigean »

pwnskar wrote:As a relatively new nesdever I'd recommend not worrying too much about tools in the beginning. You will gain a better understanding of how things are put together the longer you keep things basic. Following a simple tutorial with whatever tools used there will be enough to get you started. It's gonna take time but so does anything worth pursuing, right? :)
Thank you for tip, but that's what I'm trying to figure out or something, which is making the tutorial so easy to understand.
JRoatch wrote:
DocWaluigean wrote: - LDAXY / STAXY = A crane machine where A is Red, X is Blue, and Y is Yellow, and the fluffy bunny doll represent numbers and what it does. [A fluffy bunny represent the sprite code for the main character which is the fluffy bunny.]

- Register = ???????????? [To be edited]

- TAX / TAY = A same crane that can be given number or decimals to each others. The prize is actually radioactive nitroglycerin, and cannot be in same room with X and Y togather, hence it only transfer between A and X or A and Y.

...

I feel I got certain jots down a little while. I hope I do not get penalize for long term issues. It will take me a while a LITTLE while to re-assume what to learn about the inside the NROM header thingy.[? or the templates?]
Welcome back.

Going with your crane machine analogy a Register would be the chute where the bunny is dropped at (but read on on why this description may be flawed), and JMP and Bxx would be oddly affecting the crane operator/player somehow?


I think most object analogies like this crane machine confuses one important fact about how the CPU works: Every tiny operation that's called a "move" or a "transfer" is actually copying.

In real life (as we all know) when a thing moves from one spot to another that thing no longer exists at the old location.
In the computer realm, the action that we call "moving" leaves the old pattern of bits exactly as it is, while causing the pattern of bits in the new location to be same as the old.

You could think of this a having many chalkboards (or just a single chalkboard divided up).
So to move a number from chalkboard X to chalkboard Y, chalkboard Y must first be erased then the number in chalkboard X is read and written to chalkboard Y.
You may think the CPU could just erase chalkboard X automatically after the copy, but that's a waste of real mechanical effort, so the old chalkboard X remains the same.

There was one part of an old book I used to read as a child that helped me really understand how the CPU of computers really function.
The book was Usborne Guide to Computers: A simple and colourful introduction for beginners
and in it there was 2 pages describing an activity where you cut out a long strip of paper with simple instructions and that long strip was feed through a small paper view, and you followed the instructions in that view which included steps like moving the viewer to a numbered part of the paper strip. http://www.asciimation.co.nz/bb/wpg2?g2_itemId=5489

I can't seem to find the book any more, but I found a through review of it at http://www.asciimation.co.nz/bb/2013/10 ... -computers
I think Unregistered has the website for it! Or is it some other one who goes by..? , because I keep getting off track a little. Anyway, I thank for constructive criticism, as sad as I can't explain well, so I'm going to be a little descrete:

-Let's say the claw is grabbing 8-ball [#$08] that's the letter A. It's in a different rooms
-The #$08 is being assigned to a specific bin which is like Address $0022
-The claw of A [Accelerator] is mobing the 8-ball to the cubical bin of Address $0022 and drops it, and it performs special actions.

---

Anyway, I'll try and see what each by each works as I'm re-reading my early post.

Code: Select all

;----------------------------------------------------------------
; variables
;----------------------------------------------------------------

   .enum $0000

   ;NOTE: declare variables using the DSB and DSW directives, like this:

   ;MyVariable0 .dsb 1
   ;MyVariable1 .dsb 3

   .ende

   ;NOTE: you can also split the variable declarations into individual pages, like this:

   ;.enum $0100
   ;.ende

   ;.enum $0200
   ;.ende
Okay, there's PPU map, CPU map, and https://wiki.nesdev.com/w/index.php/PPU_memory_map other maps that I got lost so here's two things:

$0000 = Internal map of RAM, which is random access memory. I get fixated on words, so I may think this is "RAM is how much work CPU got to do before performing actions."

OR

$0000 = Pattern Table 0 . The place that is a home for the sprites and graphics.

Alongside, I do not know about, ".enum" and ".ende". Am I guessing it's the name of map? Ende is CPU Map, and Enum is PPU Map? I need a full explainations about the way "Variable" table goes, and why each code does like that.
JRoatch
Formerly 43110
Posts: 422
Joined: Wed Feb 05, 2014 7:01 am
Contact:

Re: Hello, new here, and need best recommandations.

Post by JRoatch »

DocWaluigean wrote: -Let's say the claw is grabbing 8-ball [#$08] that's the letter A. It's in a different rooms
-The #$08 is being assigned to a specific bin which is like Address $0022
-The claw of A [Accelerator] is mobing the 8-ball to the cubical bin of Address $0022 and drops it, and it performs special actions.
The cubical bin is RAM which keeps the thing that was last dropped into. in this case the 8-ball.

Some places that the 8-ball can be dropped into are not cubical bins, but instead chutes that leads to things like a large button that flashes lights (PPU Registers).

All the while, due to strange laws of computer physics the Accumulator Claw still has a 8-ball despite the claw dropping it so many times.
DocWaluigean wrote: Anyway, I'll try and see what each by each works as I'm re-reading my early post.
I think you got the general idea that the CPU and PPU have different address spaces which is why address $0000 can refer to two different things.
So instead lets see if we can make sense of what this piece of code is doing (which has nothing to do with differing address buses).

tldr/summary: All labels between .enum $xxxx and .ende goes to RAM starting at $xxxx and not ROM.

------
First remember these are instructions to the assembler.
We are attempting to command the assembler to generate the contents of a ROM that will be later executed by a 6502 CPU in a NES machine.

By default most assembler instructions will generate 1 or more bytes in the resulting ROM. It'll also keep track of how many bytes it has written so that when a label like MyVariable0: comes along the assembler will know what byte the label means.

Code: Select all

.enum $0000
This says a couple things on how the assembler should behave for the code that follows:
First .enum says that until the assembler sees a .ende it should not generate any bytes to the ROM, but to still track how many bytes instructions would of taken. That way labels still work.
The second part $0000 sets what address it's label tracking byte count starts at. asm6 still keeps it's old counter which it'll revert to once it gets to the .ende

If you remove the ; from the lines after the note, those lines will become active assembler instructions.

Code: Select all

MyVariable0: .dsb 1
Normally .dsb generates a number of filler bytes, but since the assembler is in a enum block, it won't actually write that to ROM. It'll simply add 1 to the assembler's internal address counter (properly called the Program Counter).
The result of this instruction is that the label MyVariable0: is $0000, and the next label (if any) will be $0001.

Code: Select all

MyVariable1: .dsb 3
The Program Counter is $0001, so the label MyVariable1: is $0001. Program Counter is increased by 3 so the next label will be $0004.

Code: Select all

.ende
As explained above the assembler exits it's enum mode, restoring the Program Counter to whatever it was before, and generating more ROM bytes as it encounters more instructions.

So why does the assembler have this whole enum mechanism anyway? Labels that automatically add up their sizes are useful to work with, but the automatic generating of bytes into ROM becomes a hindrance when working in a area that doesn't exist in the ROM at all. Namely the RAM.

The term enum is shorten from the word enumeration which is the process of giving ordered numbers to a list of things, and that's basically the purpose this asm6 assembler mode.

The rest of that code then repeats these enum blocks for you to put more non-ROM things located at $0100 and $0200.
Post Reply