OpenLLM-France/wikimedia huggingface dataset:
# PSP Development/Filesystem/Iterating Directories

Iterating directories is core for loading data from folders such as music players, video players, and picture viewers whom rely on searching directories to list files available to play. Recursion can be used together with iteration to view all files in a given directory - even the root. File iteration is a similar method, which includes a struct SceIoStat, to opening and modifying files.

## Opening A Directory

Directories must be opened in order to view the contents. PSPDEV gives sceIoDopen as opposed to sceIoOpen for files. However, a file handle is returned from the call and takes in a const char*. If the number is less than or equal to 0, there must be an error.

## Closing A Directory

Directories opened, like files, must be closed. Multiple directories can be open, however, unless using recursion, it is advised to not open multiple directories all at once. It is also advised to not open them at the start of the program while leaving them open until the end. The PSP is a powerful machine, but bad practices like littering RAM, especially dangerous in IO using buffers, can snowball into waste of memory, unmanageable code, and poor functionality. Directories can be closed using the SceIoDclose function. It returns an integer stating if there was a failure, which should be handled.

## Listing Files

Inside directories lay files. The struct SceIoDirent stands for "Directory entry," which holds information about the directory. In order to load information into this struct, a call to sceIoDread function needs to take place. This only gets one file at a time. This means the sceIODread function will load in data for one file from the directory into the struct. A while loop can be used to iterate through all the files. There is also a SceIoStat, which tells the size and time attributes of the folder. Since there is no path associated with the name of the file in SceIoDirent, one could use snprintf from <stdio.h> to format a string - additionally using sceIoOpen to open another file.
# PSP Development/Getting the Tools/Linux

Linux uses a package called devkitPSP, which is GNU GCC based. This package houses everything needed for development on the PSP. It is a toolchain. The package includes libraries, headers, and tools for the PSP - some external libraries developed for the PSP are included.

## Installing

This is a modified copy of the tutorial found here.
devkitPSP is mainly Oopo's patches pulled into the devkitPro toolchain build system and a build of the pspsdk.
The first thing that you need to do is create a folder for the devkitPro toolchains. Start by opening a terminal and creating the build directory.
The first package to install is the devkitPSP tarball: i686(x32 bit) or x86_64(x64 bit).
Once the file is downloaded then you need to extract it into the devkitPro folder.
Add these variables in your execution environment, for instance, editing the .bashrc file located in your home folder:
# PSP/cIPL Flash 6.60 PRO

* From the xmb (main psp menu) run the CIPL Flasher from Game - Memory stick.
* You have successfully installed 6.60 PRO.
# PSP Development

This Wikibook goes over the different aspects of programming for the PlayStation Portable (PSP). Everything from getting started, to utilizing the default libraries for the PSP hardware infrastructure is included. Everything is based on PSPDEV. Please read Getting the Tools for insight on getting PSPDEV. The goal for this book is to detail good or fair practices for programming the PSP. It is recommended to read pages top to bottom and follow through - do not stray from the instructions shown. Once an understanding of using the functions are gained, it is appropriate to improve.
Many resources have died off - it is hard to even figure out how to create a basic hello world.

### Alive Resources

* PPSSPP Forums forums.ppsspp.org
* An active forum is wololo.net
* IRC Channel #pspdev visitor status
* GitHub PSPDEV Extras Toolchain Source

### Dead Resources (Broken, or dropped)

* Idle Resources
** GitHub PSPDEV Windows PSPSDK build + external libraries
** GitHub bibanon Phone Documentation includes PSP
** qj.com Questionable Tutorials
* Broken Links (use archive.org)
** psp-programming.com latest Mar20 2012, last update 2009
** pspdev.org latest Oct20, 2010, last update April 1, ????

## Wikibook Complexity

Being aimed to be simple, walk-through code, a lot of confusion can develop. Attaining understanding with the content of these articles can be achieved by an intermediate understand of the topics in this list. While it may not be a fully comprehensive list, it should give an outline of prerequisites or goals for betterment, with respect to the understanding of the articles.
* Some understanding of Assembly/Machine code
** Relations between ASM (pref with MIPS) and C
* Advanced/Intermediate knowledge of C syntax and libraries
* Using Makefiles and make.exe
* Basic structure of a video game
NOTE: Understand the hardware that the PSP offers. Skimming over the hardware specs twice will help with understanding what the PSP offers. After, move on to the Getting Started section. The software are tools made to do specific tasks and aren't for teaching purposes.

## Table of Contents
### Hardware

* Full Device Description
* Device Specifications
* UMD Disc

### Getting Started

* Getting the Tools
** Windows
** Linux
** Mac
** PPSSPP Emulator
* Hello World Application
* User Input
* Basic Error Handling
* File System
** Reading/Writing Files
** Iterating Directories
* Multithreading
* Memory Management
* GU Graphics
** GU Basic Setup
* Basic Setup
** Connecting Clients
** Transferring Data

### Software

* PSCrypter Signs Homebrew
** Using PSCrypter
* Custom Firmware Allows ISO/Unsigned Homebrew

### Language Support

* Lua : Lua.org
* Python : Python.org

## Related Wikibooks

* PSP Programming, the incomplete, abandoned Wikibook which started the urge for this project
* C Programming, the language that is used for PSP programming, with MIPS Assembly
* MIPS Assembly, the language that is used for PSP programming, with C/C++
* C++ Programming, another language which can be used for PSP programming
# PSP Development/Getting the Tools

To start development on the PSP, the PSP compiler, header files, libraries, and other (included) miscellaneous tools are needed. Few definite resources are online due to age which cover this process.
Included is a docs folder which provides short descriptions about functions, headers, object flow, and more in a meaningful, easy-to-access way. Searching through the include folder for header file's contents is a major problem the docs circumvent. This online version may be easier to read.
Please choose your Operating System to get started!
* Windows
* Linux
* Mac
Don't forget to grab the mandatory PPSSPP!
# Oberon/ETH Oberon/2.3.7/Tutorials.Tool

| Desktops.OpenDoc BooksUser.Panel | Book Reader Panel |
| Desktops.OpenDoc BooksDev.Panel | Book Development Panel |
| Files: ||
| Books0.Obj Books0.Sym | Auxiliary module |
| Books.Obj Books.Sym | Book base system |
| BooksHelp.Obj BooksHelp.Sym | Help Icons |
| BookDocs.Obj BookDocs.Sym | Book Manager |
| BookCompiler.Obj BookCompiler.Sym | Compiler for book texts |
| BooksDev.Panel | Development panel for creating new books |
| BooksUser.Panel | Panel for book reader |
| BasicGadgets.Panel | A panel showing a large selection of visual gadgets |
| Main.Book | Starting point in the tutorial system - Book index |
| Mouse.Book | How to use the mouse |
| Tutorials.Book | Three tutorials in one: Using, Developing, Conceiving Tutorials |
| Oberon3TUI.Book | How to use the textual user interface of Oberon System 3 |
| GadgetsIntro.Book | Introduction to the Gadgets System |
| GadgetsUse.Book | How to use the Gadgets System |
| GadgetsOberon.Book | How to manipulate gadgets by program |
| GadgetsProg.Book | How to program new gadgets |
| Backdrops.Book | How to create desktop backgrounds (in German) |
| Compiler.Book | How to use the compiler and the builder |
| Compress.Book | How to use compressed and archive files |
| FontEditor.Book | How to create and maintain fonts |
| Internet.Book | How to access the Internet services |
| Profiler.Book | How to measure execution speed |
| Rembrandt.Book | How to create and maintain raster pictures |
| Watson.Book | How to use the browser and module definitions |
| Tutorials.Tool | This file |
| Examples.Mod | A module containing many sample commands used in the tutorials (GadgetsIntro.Book GadgetsUse.Book and GadgetsOberon.Book) |
# Oberon/ETH Oberon/Dialer

Dialer.Dial can be used to establish a modem connection from "home" to "office" for PPP. The office computer runs mgetty in Linux and answers the connection according to the ringback protocol. For Dialer to support ringback, the syntax of the Dial script is extended so that an empty modem command string invokes a pause; 11 "" is an 11 s pause in this script. The script belongs in the Oberon.Text.
Dialer can also be used for frequently dialed voice calls. This is such a script, invoked with Dialer.Dial NuvoSomeone Device0 ~. Init specifies the COM port; why should Dial specify the device? A better syntax would allow Dialer.Dial Nuvo 6041234567 ~. That would work with various access protocols and destination numbers. Another detail to work on.
# PSGI

PSGI is an interface between Perl Web applications and Web servers. PSGI is inspired by Python's WSGI and Ruby's Rack. The specification was discussed in YAPC::Asia 2009, and the reference implementation Plack, has been developed by Tatsuhiko Miyagawa.
The concept of PSGI can maybe describe as "The middle layer of everything". It extends and enhances the old CGI standard such that Web applications on top of the same PSGI layer can share certain common data, such as http authentication, database connection handle and session. While those may have been implemented as Apache modules over past years, PSGI specification makes it possible and easy to develop middle-wares for all applications and all front-end servers.
The core specification of PSGI is very simple. A PSGI application, is a Perl subroutine, that takes exactly one argument, the environment and returns an array reference of exactly three values. The status code, the response headers, and the response body. Here's an example of a "Hello World" PSGI application:
The $env is a hashref that contain environment variables. It includes the values in the %ENV hash, but there are more PSGI-specific values inside. Developers writing PSGI-based Web applications should not access %ENV hash directly.
# Perl Programming/Keywords/while
## The while keyword

while is the statement that uses the EXPRESSION, called the condition, to loop through a block until the condition is true. It is the opposite of the until statement.

### Examples

prints the numbers 5 to 9 consecutively:
return the same:
# Perl Programming/Keywords/xor
## The xor keyword

xor is a logical exclusive OR operator that has a very low precedence, but is otherwise equivalent to ^. For logical reasons, it cannot short-circuit.
# Perl Programming/Keywords/y
## The y keyword

y is the transiteration operator as known from the UNIX sed line editor, and is equivalent to tr.
# Perl Programming/Keywords/when
## The when keyword

when is a flow-control keyword that is used in the for and given statements.
The form EXPRESSION when EXPRESSION is used in the for statement, the form when EXPRESSION in the given statement that is similar to the C switch statement.
Please consider that given is considered highly experimental!

### Examples
## See also

* for
* given
# Perl Programming/Keywords/write
## The write keyword

The write function writes a formatted (multi-line) record to the FILEHANDLE with the associated file format that has the same name per default of the filehandle. This name can be modified by assigning the new name to the $~ variable.
If the contents to be written are more than the page can hold, a form feed, and a special top-of-page format is used to format the new page header before the record is written that has by default the filehandle with "_TOP" appended, or "top" in the current package. But this name can be added to the $^ variable.
Without an FILEHANDLE, it goes to the standard default output channel. This is normally STDOUT, but can be modified by the select operator.
write is unfortunately not the opposite of read!

### See also

* read
* syswrite
# Perl Programming/Modifiers

In addition to the basic control structures, Perl allows the use of statement modifiers. The statement modifier is placed at the end of the statement that it modifies. Note that the do {…} until (…) and do {…} while (…) loop constructs are actually statement modifiers. The complete list of modifiers is:
| statement | ⇗ ⇘ | if | ⇘ ⇗ | expression |
| statement | ⇗ ⇘ | while | ⇘ ⇗ | expression |
| statement | ⇗ ⇘ | unless | ⇘ ⇗ | expression |
| statement | ⇗ ⇘ | until | ⇘ ⇗ | expression |
| statement | ⇒ | foreach | ⇒ | list |
Unlike BASIC-PLUS, statement modifiers in Perl cannot be stacked.
# Perl Programming/Numbers
## Numbers

Numbers in Perl do not have to be enclosed in any kind of punctuation; they can be written as straight numbers.

### Floating-point numbers

Here are some acceptable floating point numbers:
0.1, -3.14, 2.71828…

### Integers

Integers are all whole numbers and their negatives (and 0): {… -3, -2, -1, 0, 1, 2, 3, …}.
Here are a few examples of integers:
The following examples are not integers:

### Non-decimal numbers

I'll dwell on this topic for a little longer than the other types of numbers. In Perl you can specify not only decimal numbers, but also numbers in hex, octal, and binary. If you are not familiar with how these systems work, you can try these Wikipedia articles:
* Hexadecimal
* Octal
* Binary
In Perl you have to specify when you are going to write a non-decimal number. Binary numbers start with an 0b, so here are some possible binary numbers:
Octal numbers start with 0 ("zero"), so here are some possible octal numbers:
Hexadecimal numbers start with 0x, so here are some possible hexadecimal numbers:

### Number Operators

Just like strings, numbers have operators. These operators are quite obvious so I'll just give a quick example of each one.

#### The +, - , /, and * operators

These operators are pretty obvious, but here are some examples:
Perl also has the familiar increment, decrement, plus-equals, and minus-equals operators from C:
Now let's look at one more operator that's a little less obvious.

#### The ** Operator

The ** operator is simply the exponentiation operator. Here's another example:

### Exercises

* Remember the x operator? Use a mathematical expression as the number of times to repeat the string, see what happens.
* Write a program like our original hello world program except make it print a mathematical expression.
# Perl Programming/Objects
## Objects

When Perl was initially developed, there was no support at all for object-orientated (OO) programming. Since Perl 5, OO has been added using the concept of Perl packages (namespaces), an operator called bless, some magic variables (@ISA, AUTOLOAD, UNIVERSAL), the -> and some strong conventions for supporting inheritance and encapsulation.
An object is created using the package keyword. All subroutines declared in that package become object or class methods.
A class instance is created by calling a constructor method that must be provided by the class, by convention this method is called new
Let's see this constructor.
Client code can use this class something like this.
This code prints 10.
Let's look at the new contructor in a little more detail:
The first thing is that when a subroutine is called using the -> notation a new argument is pre-pended to the argument list. It is a string with either the name of the package or a reference to the object (Object->new or $o->setA. Until that makes sense you will find OO in Perl very confusing.
To use private variables in objects and have variables names check, you can use a little different approach to create objects.
Now you have good encapsulation - you cannot access object variables directly via $o->{bar}, but only using set/get methods. It's also impossible to make mistakes in object variable names, because they are not a hash-keys but normal perl variables, needed to be declared.
We use them the same way like hash-blessed objects:
prints 10

## Further reading

* perlobj - Perl object reference, perldoc.perl.org
* Perl OOP, perltutorial.org
# Paper Mario

Paper Mario is an innovative RPG and the first entry in the Paper Mario series. It is a successor of sorts to Super Mario RPG, but features its own aesthetic and game mechanics.
The game was released on the following platforms
* Nintendo 64 (Original)
* iQue Player (Chinese version)
* Wii (Virtual Console)
* Wii U (Virtual Console)

## Table of Contents

* Star Spirit Powers
* Party Members and their Attacks
* Bosses
* Badges
* Bestiary

### Miscellaneous

* Twink
# Palm OS Guide/Troubleshooting
## Misaligned Digitizer

Sometimes your digitizer(touchscreen) goes out of alignment. You can usually align it by going to the Prefs app. But what if you screen is so out of alignment you can't go to Prefs? Install Z-Digitizer. It will let you align your screen after every soft reset. So just hotsync Z-Digitizer to your palm, poke the hole at the back, and you're back in business!
# Paper Mario/Bosses
## Boss stats
### Goomba King and Goomba Bros.

Goomba King's stats: HP: 10, Attack: 1, Defense: 0 Goomba Bros. stats: HP: 2, Attack: 1, Defense: 0

### Koopa Bros. and Bowser???

Bowser???'s stats: HP: 10, Attack: 1, Defense: 1 Koopa Bros. stats: HP: 5 of each, Attack: 1, Defense: 1

### Tutankoopa and Chompy

Tutankoopa's stats: HP: 30, Attack: 3, Defense: 0 Chomp's Stats: HP: 4, Attack: 3, Defense: 3

### Tubba Blubba and his heart

Tubba Blubba's stats: HP: 10, Attack: 4, Defense: 0 Heart's Stats: HP: 50, Attack: 6, Defense: 0

### Shy Guy Army

Shy Squad's stats: HP: 15, Attack: 1, Defense: 0 Stilt Guy's stats: HP: 7, Attack: 4, Defense: 0 Shy Stack's stats: HP: 10, Attack: 1, Defense: 0 General Guy's stats: HP: 30, Attack: 4, Defense: 2

### Lava Piranha and the Lava Buds

Lava Piranha's stats: HP: 40, Attack: 5 (normal), 7 (on fire) Lava Buds' stats: HP: 8, Attack: 4 (regular only), Defense: 0 Petit Piranhas' stats: HP: 1, Attack: 6, Defense: 0

### Huff N. Puff and the Tuff Puffs

Huff N. Puff's stats: HP: 60, Attack: 5, Defense: 0 Tuff Puffs' stats: HP: 1, Attack: 2, Defense: 0

### Crystal King and the Crystal Bits

Crystal King's stats: HP: 70, Attack: 6, Defense: 2 Crystal Bits' stats: HP: 1, Attack: 4 (basically, when the Crystal King swallows them and spits them at Mario), Defense: 0

### King Bowser and Kammy Koopa

Bowser's stats
* Round 1: HP: 50, Attack: 6/8, Defense: 1
* Round 2: HP: 99, Attack: 8/10, Defense: 2
Kammy's stats: HP: 10, Attack: 4, Defense: 0
# Paper Mario/Bosses/Bosses/General Guy
## Backstory

General Guy is one of the bosses in Paper Mario. He was really just a regular Shy Guy until King Bowser Koopa gave him one of the Star Spirits to guard. He resides in Shy Guys' Toy Box, along with the rest of the Shy Guy community. He wanted all the rest of the Shy Guys to follow his orders, but never was able to get them to listen. When Bowser used the Star Rod on General Guy, he became a General among the Shy Guy's and commands them to stop Mario and his friends from rescuing Muskular, the fourth Star Spirit.
# Paper Mario/Party Members
### Goombario

* Headbonk (0 FP): Bonks single enemy, like Mario's jump.
* Tattle (0 FP): Uncovers enemy's description and stats. Outside of battle, he can tell you about the people you meet and the places you visit.
* Charge (1 FP): Boosts Headbonk attack by 2.
* Multi-bonk (3 FP): Much like Mario's Power Bounce, bonks an enemy multiple times until he misses the action command.

### Kooper

* Shell Toss (0 FP): Attacks one enemy. Outside of battle, he can use this attack to flip switches, grab items and attack enemies.
* Power Shell (3 FP): Attacks all enemies.
* Dizzy Shell (4 FP): Makes enemies dizzy.
* Fire Shell (5 FP): A fiery move that attacks all grounded enemies.

### Bombette

* Body Slam (0 FP): Charges at one grounded enemy.
* Bomb (3 FP): Attacks one grounded enemy. Outside of battle, she can use this attack to flip switches, blow up fake/cracked walls and attack enemies.
* Power Bomb (6 FP): Attacks all grounded enemies.
* Mega Bomb (8 FP): Attacks grounded and airborne enemies.

### Parakarry

* Sky Dive (0 FP): Kicks one enemy while airborne.
* Shell Shot (3 FP): Charges at one enemy while airborne.
* Air Lift (3 FP): Lifts enemies out of battlefield. Outside of battle, Mario can use this attack to hover over short distances due to his (Mario's) weight.
* Air Raid (6 FP): Flies around like crazy, inflicting damage to all enemies.

### Lady Bow

* Smack (0 FP): Smacks an enemy 5 times.
* Outta Sight (2 FP): Makes Mario invulnerable to attacks. Outside of battle, she can use this attack to protect Mario from damage.
* Spook (3 FP): Scares enemies away from battlefield.
* Fan Smack (5 FP): Smacks an enemy 5 times with her fan.

### Watt

* Electro Dash (0 FP): Attacks one enemy, ignoring enemy's defense value.
* Power Shock (2 FP): Paralyzes single enemy.
* Turbo Charge (3 FP): Temporarily boosts Mario's attack power.
* Mega Shock (5 FP): Paralyzes all enemies.

### Sushie

* Belly Flop (0 FP): Hop on one enemy.
* Squirt (3 FP): Shoots water at one enemy.
* Water Block (3 FP): Boosts Mario's defense.
* Tidal Wave (6 FP): Launches water attacks against all enemies.

### Spike/Lakilester

* Spiny Flip (0 FP): Throws a Spiny Egg at one enemy.
* Spiny Surge (4 FP): Throws a lot of Spiny Eggs at all enemies.
* Cloud Nine (4 FP): Boosts Mario's evasion rate.
* Hurricane (5 FP): Blows enemies out of the battlefield.
# Paper Mario/Party Members/Bombette

Bombette is one of Mario's companions. Bombette has many abilities, such as exploding to make holes in walls, body slamming enemies in battle, opening secret passages, and detonating switches that Mario cannot reach.

## Trivia

Bombette is a variation on the classic Mario enemy, the Bob-omb. The difference lies in her color which is pink as opposed to the standard black color of other Bob-ombs. Her other significant difference is that her fuse looks more like a ponytail.
# Paper Mario/Party Members/Goombario

Goombario is a Goomba and a big fan of Mario, with whom he joins forces. Goombario lives to the west of Toad Town along with his family and a single Toad in Goomba Village. The Goombas of his family break the stereotypical reputation of Goombas by being peaceful, intelligent, and friendly to Mario. Goombario himself wears a blue baseball cap, which, aside from his smile, is the only physical indication that he is not a typical Goomba.

## Abilities

* Headbonk - Goombario will do a head stomp on the enemy.
* Charge - Goombario will charge up and become more powerful for his next attack.
* Multibonk - Goombario will repeatedly bounce off of the enemy, but only if the player uses the Action Command successfully.

### Tattle

Outside of Battle Goombario has the ability to give the player hints about the area and the people inhabiting it.
In battle, his Tattle ability gives the player specific information about the targeted enemy, including health (HP), Defense, and special characteristics.

## Trivia

Goombario is the first Goomba to be a playable character in any Mario game
Goombario's equivalent in Paper Mario: The Thousand-Year Door is Goombella, who have many abilities in common.
Goombario is a portmanteau of Goomba and Mario.
# Pinyin/Climber

See also
# Pinyin/Clinic

See also
# Pinyin/Cloud

Cloud is a mass of very small drops of water in the sky.
yurn shih tianshahng dahliahng d xihxiaao shuiidi.
# Pinyin/Clouding

See also
# Pinyin/Cluster

Search Pinyin cluster
# Pinyin/Coal

Search coal
Coal is a hard black mineral that is found below the ground and burnt to produce heat.
meir shih carng yur dihxiah, jianyihng heiseh, yohngzuoh rarnliaoh d kuahngwuh.